JPA:基于实体映射键的双向关系

时间:2013-10-30 06:31:08

标签: java java-ee jpa eclipselink

是否可以通过单个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看起来很有前途,但没有明确的方法来定义双向性。

0 个答案:

没有答案