是否可以通过单个JPA 2.x' Map'指定两个双向关系。属性?与地图关键字相关的关系应该是多对多的关系。而地图价值是多少到一个"。理想情况下,具有Map成员变量的类应该拥有这两种关系。数据库是从代码自动生成的,因此我可以接受由持久性提供程序(EclipseLink)分配的默认列名。下面的代码说明了我希望Java实体看起来如何。我很困惑要插入哪些注释。
@Entity public class A {
private Long mId;
@Id @GeneratedValue public Long getId() {return mId;}
protected void setId(Long pId) {mId = pId;}
private Set<B> mBs;
public Set<B> getBs() {return mBs;}
protected void setBs(Set<B> pBs) {mBs = pBs;}
}
@Entity public class B {
private Long mId;
@Id @GeneratedValue public Long getId() {return mId;}
protected void setId(Long pId) {mId = pId;}
private Map<A,C> mAToC;
public Map<A,C> getAToC() {return mAToC;}
protected void setAToC(Map<A,C> pAToC) {mAToC = pAToC;}
}
@Entity public class C {
private Long mId;
@Id @GeneratedValue public Long getId() {return mId;}
protected void setId(Long pId) {mId = pId;}
private B mB;
public B getB() {return mB;}
protected void setB(B pB) {mB = pB;}
}
JEE 6 Tutorial建议@OneToMany
或@ManyToMany
注释可用于声明Map 值关系。但是,我没有看到有关Map 密钥关系规范的更多信息。 @MapKeyJoinColumn
看起来很有前途,但没有明确的方法来定义双向性。