我正在使用JPA和Hibernate实现(但是对经典Hibernate的解决方案也会受到赞赏)。 它是ManyToMany * uni *方向关系,比如说“课程”和“学生”(下面的代码)。
我的问题是在他的课程列表被分离时保存学生。每门课程都保证已经保存在数据库中,并且有ID ...所以我想更新JoinTable 而不会在检查每门课程的存在时浪费性能。我可以使用原始JDBC轻松完成。但是,如果我使用Hibernate,它会强制我检查并“重新附加”课程(重新附加是通过CASCADE,或重新选择课程)。
@Entity
public class Course{
@Id Long id;
// ... more properties, setters, getters
}
@Entity
public class Student{
@Id Long id;
@ManyToMany @JoinTable(..)
Set<Course> courses;
// ... more properties, setters, getters
}
Now:
// .. start transaction 1
Set<Course> detachedCourses= entityManager.find(...);
// ... end transaction 1, courses are now detached
// start transaction 2
Student stud=new Student("john doe");
s.setCourses(detachedCourses);
entityManager.persist(stud);
// end transaction 2 - this would fail unless I "re-attach" the courses
有没有办法告诉Hibernate“只相信我并更新JoinTable(将这个studentID链接到那些courseID),而无需重新附加/验证每门课程?
由于