java Hibernate:与EmbeddedID重复的getter/setter?
我有一张有三列的表,“a”、“B”和“C”。其中两列(A和B)是表的复合主键。我为这个表编写了一个Java类,并使用Hibernate将类中的数据映射到表中的数据。我为嵌入式(即复合)键创建了另一个类
这两个类如下所示:
@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应该去哪里。外部键和键是否都应该为组成复合键的值设置设置器?如果我在这两个地方都有一个setter,那么如果我在外部设置了一个值,Hibernate是否做了正确的事情(即在键上设置值)?应该在外面。getA/B()和外部。setA/B()是否遵从密钥类
我认为在两个地方为相同的数据设置setter是不好的编码实践。至少是模棱两可的。我希望Hibernate能为我设置Key类的值,但我想确定一下。谢谢
-乔
# 1 楼答案
我对
@EmbeddedId
不是100%确定,但我认为它必须以与常规@Embedded
属性相同的方式处理,因此我认为映射应该如下所示: