您正在阅读hibernate文档.
http://docs.jboss.org/hibernate/annotations/3.5/reference/en/html/entity.html
使用@ManyToMany批注在逻辑上定义了多对多关联.您还必须使用@JoinTable批注描述关联表和连接条件.如果关联是双向的,则一方必须是所有者,一方必须是反向结束(即,在更新关联表中的关系值时将忽略它):
除了最后一点,我理解一切
(即,在更新关联表中的关系值时将忽略它).
这是什么意思?例?
JB *_*zet 27
假设您有以下实体:
@Entity
public class Student {
@ManyToMany
private Set<Course> courses;
...
}
@Entity
public class Course {
@ManyToMany(mappedBy = "courses")
private Set<Student> students;
...
}
Run Code Online (Sandbox Code Playgroud)
所有者方是学生(因为它没有mappedBy
属性).反面是Course((因为它具有mappedBy
属性).
如果您执行以下操作:
Course course = session.get(Course.class, 3L);
Student student = session.get(Student.class, 4L);
student.getCourses().add(course);
Run Code Online (Sandbox Code Playgroud)
Hibernate将在连接表中为学生4和课程3添加一个条目,因为您更新了关联(student.courses
)的所有者方.
如果您执行以下操作:
Course course = session.get(Course.class, 3L);
Student student = session.get(Student.class, 4L);
course.getStudents().add(student);
Run Code Online (Sandbox Code Playgroud)
什么都不会发生,因为你更新了关联(course.students
)的反面,但忽略了更新所有者方面.Hibernate只考虑所有者方面.
归档时间: |
|
查看次数: |
6047 次 |
最近记录: |