0
我有兩個實體課程和CourseUser。使用OneToMany註釋映射到CourseUser的課程。在課程中的CourseUser列表中添加CourseUser並更新後,新表將出現在CourseUser表中,但它未映射到課程。如果我更新後從課程中調用toString用戶列表,它將是空的。休眠OneToMany關係不映射新數據
@Entity
@Table(name = "COURSES")
public class Courses{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "course_id")
private int course_id;
@Column(name = "course_name", nullable = false)
private String courseName;
@Autowired
@OneToMany(mappedBy = "course", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
private Set<CourseUser> courseUsers = new HashSet<>(0);
CourseUser實體:
@Entity
@Table(name = "COURSE_USERS",
uniqueConstraints = {@UniqueConstraint(columnNames = {"course_name", "user_name"})})
public class CourseUser {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ev_id")
private int ev_id;
@Column(name = "course_name", nullable = false)
private String courseName;
@Column(name = "user_name", nullable = false)
private String userName;
@Column(name = "course_role")
private String courseRole;
@Column(name = "grade")
private int grade ;
@ManyToOne
@JoinColumn(name = "course_id")
private Courses course;
這是我的新courseUser添加到課程:
Courses course = courseDAO.getCourse(id);
Set<CourseUser> courseUsers = course.getCourseUsers();
CourseUser newUser = new CourseUser();
newUser.setUserName(name);
newUser.setCourseRole(role);
newUser.setCourseName(course.getCourseName());
courseUsers.add(newUser);
course.setCourseUsers(courseUsers);
update(course);
,這裏是CoursesDAO更新方法:
public void update(Courses course) {
Session session = sf.openSession();
Transaction transaction = session.beginTransaction();
session.merge(course);
session.flush();
transaction.commit();
session.close();
}
初始化'Set courseUsers = new HashSet <>(0)'是什麼目的? –
我已經在本教程中完成了https://www.mkyong.com/hibernate/hibernate-one-to-many-relationship-example-annotation/ – Petych