Hibernate基础之九:多对多,单/双向关联 @ManyToOne @OneToMany
程序员文章站
2022-04-22 16:10:33
...
1.组件映射,一个类中包含另一个
组件上@Eembeded2.多对一,单向关联
“多的”聚合“一的”1个实例,Group--User
user的getGroup上加@ManyToOne
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToOne
public Group getGroup() {
return group;
}
3.一对多,单向关联
“一的”聚合“多的”的集合
存储用set最好,
@OneToMany
@JoinColumn(name="groupId")
getUsers()
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
private Set<Users> users = new HashSet<Users>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@OneToMany
@JoinColumn(name="groupId")
public Set<Users> getUsers() {
return users;
}
Users里边不需要注解
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
@Id
@GeneratedValue
public int getId() {
return id;
}
4.一对多(多对一),双向关联
双向就要mapped by=“”一: @OneToMany(mappedBy="group")
多:@ManyToOne
@Entity
@Table(name="t_Group")
public class Group
{
private int id;
private String name;
private Set<Users> users = new HashSet<Users>();
@Id
@GeneratedValue
public int getId() {
return id;
}
@OneToMany(mappedBy="group")
public Set<Users> getUsers() {
return users;
}
@Entity
@Table(name="t_Users")
public class Users
{
private int id;
private String name;
private Group group;
@Id
@GeneratedValue
public int getId() {
return id;
}
@ManyToOne
public Group getGroup() {
return group;
}
5.多对多,单向关联
单向:通过老师能找到他教那些学生,学生不知道有哪些老师教他。
teacher知道教哪些学生(Teacher里保存Student集合),学生不知道谁教(学生里边不保存Teacher信息)
双向:通过老师能找到他教那些学生,通过一个学生也能找到教他的所有老师。
要加中间表
@ManyToMany
@JoinTable(name="t_s",
joinColumns={@JoinColumn(name="teacher_id")}
inverseJoincolumns={@JoinColumn(name="student_id")}
)
getStudents()
6.多对多,双向关联
互相持有set
另一侧增加:
@ManyToMany(mappedBy="students")//对方属性的名称
Set<Teacher> getTeacers()
{
}
上一篇: JPA OneToOne双向关系
下一篇: OneToOne主键关联