Java Hibernate / JPA:从分离的数据更新JoinTable

时间:2013-12-14 00:15:48

标签: java hibernate

我正在使用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),而无需重新附加/验证每门课程?

由于

0 个答案:

没有答案