我有一个三列的表,“A”、“B”和“C”。其中两列(A 和 B)是表的复合主键。我已经为这个表编写了一个 Java 类,并且我正在使用 Hibernate 将类中的数据映射到表中的数据。我为 Embedded(即复合)键创建了另一个类。
这两个类如下所示:
@Entity
@Table(name="SOME_TABLE", schema="SOME_SCHEMA")
public class Outer {
private Key key;
private String a;
private String b;
private String c;
@EmbeddedId
public Key getId() {
return this.key;
}
// Also a setter for Key...
@Column(name="A")
public String getA() {
return this.a;
}
public void setA(final String a) {
this.a = a;
}
// Also setters and getters for B and C.
}
.
@Embeddable
public class Key {
private String a;
private String b;
@Column(name="A")
public String getA() {
return this.a;
}
public void setA(final String a) {
this.a = a;
}
// Also a getter & setter for B.
}
似乎所有的 Hibernate 文档都掩盖了 getter 和 setter 应该去哪里。Outer 和 Key 是否都应该具有组成复合键的值的设置器?如果我在两个地方都有一个设置器,那么如果我在 Outer 上设置 A 的值,Hibernate 是否会做正确的事情(即在 Key 上设置值)?Outer.getA/B() 和 Outer.setA/B() 应该遵循 Key 类吗?
我认为在两个地方为相同的数据设置 setter 是不好的编码习惯。至少是模棱两可的。我希望 Hibernate 会为我设置 Key 类的值,但我想确定。谢谢!
-乔