考虑下面提到的两个表 -
表1(id_col,name_col)
表2(uid_col、code_col_1、code_col_2)
其中,
id_col 是 Table1 的主键
uid_col 是 Table2 的主键
并且 id_col 与 code_col_1 和 code_col_2 具有一对多关系
记录可能如下所示:-
表1
1、xxx
2、yyy
表2
11, 1, 2
12, 2, 1
12, 2, 2
JPA 在以下类中会是什么样子?
@Entity
@Table(name = "Table1")
public class T1 {
@OneToMany(targetEntity=T2.class, mappedBy="??????", cascade=CascadeType.ALL)
private List<T2> t2; //???not sure about this
}
@Entity
@Table(name = "Table2")
public class T2 {
@ManyToOne
@JoinColumn(name="code_col_1")
private T1 t1; //???not sure what goes here
}
最佳答案
这不是一对多关联;相反,它是从 T2
到 T1
的两个独立的多对一关联。您可以将两者映射到 T2
一侧:
@Entity
@Table(name = "Table2")
public class T2 {
@Id // map whatever generator you'd like
private long id;
@ManyToOne
@JoinColumn(name="code_col_1")
private T1 t1_code1;
@ManyToOne
@JoinColumn(name="code_col_2")
private T1 t1_code2;
}
将反向一对多关联从 T1
映射到 T2
并不是一个好主意,因为您可能会冒在两个集合中拥有(某些)相同元素的风险会导致插入/删除时出现各种麻烦。
关于hibernate - 一对多多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5989430/