Hibernate对象关系映射总结
public class Student1 { private int id; private String name; …………………………………. }
@Entity
@Table(name="t_jpa_Student2") public class Student2 { private int id; private String name; …………………………………. }
public class Teacher1 { private int id;
private String name;
private Set<Student1> students = new HashSet<Student1>(); …………………………………. }
@Entity
@Table(name="t_jpa_teacher2") public class Teacher2 { private int id; private String name; private Set<Student2> students = new HashSet<Student2>(); @ManyToMany
@JoinTable(name="t_jpa_teacher_student",
joinColumns={@JoinColumn(name="teacher_id")},
inverseJoinColumns={@JoinColumn(name="student_id")} )
…………………………………. }
在单向关系中没有mappedBy,主控方相当于拥有指向另一方的外键的一方。
1.一对一和多对一的@JoinColumn注解的都是在[主控方](外表主键在本表中做外键) 2.一对多的@JoinColumn注解在[被控方],即一的一方 (本表的主键在外表中做外键) 3.多对多中,joinColumns写的都是本表在中间表的外键名称,
inverseJoinColumns写的是另一个表在中间表的外键名称 双向关系中的JoinColumn
1.一对一和多对一的@JoinColumn注解的都是在[主控方](一方的主键在多方中做外键)
双向关联规律:1:要设mapby 2: 导航设好后,程序中都要设置双方的关系。
如:用户组和用户的关系:(多对一双向) public void testSaveGroup() { User2 u1 = new User2();
u1.setName("testSaveGroup我是用户1"); User2 u2 = new User2();
u2.setName("testSaveGroup我是用户2");