方案如下
表A具有复合PK。
Table A
--------
a1 (pk)
a2 (pk)
a3 (pk)
foo
bar
LastUpdateDate
LastUpdateUser ========
表B也有复合PK,它实际上是A的PK的子集,这里也作为FK工作。没有强制FK约束。
Table B
-------- a1 (fk,pk) a2 (fk,pk) foo bar LastUpdateDate LastUpdateUser ========
我尝试了几种方法,但没有一种方法可行。谁能告诉一个有效的Hibernate映射解决方案?注释风格更好。
非常感谢。
维夫
答案 0 :(得分: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 / getters。
通常这类问题需要大量的试验和错误,所以不要指望它能立即发挥作用。但这应该为你提供挖掘的方向。一旦确定了最终配置,请将其添加到您的问题中,以便将来有人可以从中受益。