1

场景如下

表 A 有一个复合 PK。

表 A 
--------
a1 (pk)
a2 (pk)
a3 (pk)
foo
bar
LastUpdateDate
LastUpdateUser ========

表 B 也有一个复合 PK,它实际上是 A 的 PK 的子集,这里也作为 FK 工作。没有强制的 FK 约束。

表B 
-------- a1 (fk,pk) a2 (fk,pk) 富 酒吧 上次更新日期 最后更新用户 ========

我尝试了几种方法,但都没有奏效。谁能告诉一个有效的 Hibernate 映射解决方案?注释风格更好。

非常感谢。

薇薇

4

1 回答 1

0

我可以看到以下设置。尽管开始工作可能很棘手,而且根据我的经验,这是不必要的复杂性。

class A implements Serializable {
   @Id
   private PK id = new PK();
   @Embeddable      
    public static final class PK implements Serializable {
        @ManyToOne 
        @JoinColumns ({
        @JoinColumn(name="A1_COL", referencedColumnName = "id.a1"),
        @JoinColumn(name="A2_COL", referencedColumnName = "id.a2"),

        })
         B b;            
        @Basic String a3;
    }    
 }


class B implements Serializable {
   @Id
   private PK id = new PK();
   @Embeddable      
    public static final class PK implements Serializable {                    
        @Basic String a1;
        @Basic String a2;
        @Basic String a3;
    }    
 }

您应该可以通过

a.getId().getB()

根据需要添加 setter/getter。

通常这种类型的问题需要大量的反复试验,所以不要指望这会立即奏效。但这应该会给你一个挖掘的方向。确定最终配置后,请将其添加到您的问题中,以便将来有人可以从中受益。

于 2011-06-02T05:25:30.600 回答