考虑下面提到的两个表 -
表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
}
答案 0 :(得分:1)
这不是一对多关联;相反,它是从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
并不是一个好主意,因为您冒险在两个集合中都有(某些)相同的元素会导致各种各样的插入/删除过程中出现问题。