一对多的关系

时间:2011-05-13 08:47:22

标签: hibernate jpa

考虑下面提到的两个表 -
表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
}

1 个答案:

答案 0 :(得分:1)

这不是一对多关联;相反,它是从T2T1的两个独立的多对一关联。您可以在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并不是一个好主意,因为您冒险在两个集合中都有(某些)相同的元素会导致各种各样的插入/删除过程中出现问题。