如何使用JPA/Hibernate映射这种关系



我有两个表共享一个公共键。我想要的是,当我为第一个表加载类时,我还会得到一个与第二个表相对应的类列表,它们共享键。

更具体地说:表A的id(id1(存在于表B的多个条目中。但是,表B使用复合键,并使用id1和id2作为键。

我想实现的是,当加载表A的POJO时,我还可以获得表B的所有条目,其中表A中的id1等于表B中的id1。类似于:

public class TableA {
private String id1;
private List<TableB> list; // where id1 in tableA == id1 in tableB
}

table A id column: 
id1
table B composite id: 
id1 // same as for tableA
id2

类B将有一个部分依赖于a的复合标识符。这可以使用EmbeddedID或通过指定ID类进行映射。使用ID类如下所示:

实体A

@Entity
public class A {
@Id
@Column(name = "id1")
private Long id1;
@OneToMany(mappedBy = "a")
private Set<B> bs;
}

实体B

@Entity
@IdClass(Bid.class)
public class B {
@Id
@ManyToOne
@JoinColumn(name = "id1")
private A a;
@Id
@Column(name = "id1")
private Long id2;
}

B的ID类

public class Bid implements Serializable{
//must be of same type as id of target entity A
private Long a;
private Long id2;
// **must** implement equals and hash code
}

最新更新