首页 > 解决方案 > How to have a course, student, progress relation in spring boot with JPA & Hibernate?

问题描述

I am trying to implement a Student, Course and Progress relation in spring boot. I have a Set of students in Course who are enrolled for that Course. I want to track progress of each student. My entities are.

Courses

@Entity
@Table(name = "Course")
public class Course {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private int courseId;

@Column(name = "name")
private String courseName;

@ManyToMany(fetch = FetchType.LAZY,
            cascade = {
                CascadeType.PERSIST,
                CascadeType.MERGE
            })
    @JoinTable(name = "UserCourse",
            joinColumns = { @JoinColumn(name = "user") },
            inverseJoinColumns = { @JoinColumn(name = "course") })
private Set<UserInfo> users = new HashSet<>();
}

UserInfo

@Entity
@Table(name = "UserInfo")
public class UserInfo {

@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private Integer userId;

@Column(name = "fname")
private String firstName;

@Column(name = "lname")
private String lastName;

@Column(name = "email")
private String userEmail;
}

How can I track progress of each user who has opted for the course. It should be a float value.

标签: hibernatejpaspring-data-jpa

解决方案


通过将进度列映射到实体,将进度列添加到 UserCourse 表中。见方法:

https://vladmihalcea.com/the-best-way-to-map-a-many-to-many-association-with-extra-columns-when-using-jpa-and-hibernate/


推荐阅读