我有以下可嵌入类。
电子邮件:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Email")
@Embeddable
public class Email {
@XmlElement(required = true, nillable = true, name = "etype")
private String type;
private String address;
private String source;
// getters and setters
}
地址:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "MyAddress")
@Embeddable
public class MyAddress {
@XmlElement(required = true, nillable = true, name = "atype")
private String type;
private String zip;
// getters and setters
}
嵌入上述两者的实体。
@Entity
@Table(name = "PERSON")
public class MyPerson {
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "address", column = @Column(name = "E_ADDR")),
@AttributeOverride(name = "source", column = @Column(name = "E_SRC")) })
private Email email;
@Embedded
@AttributeOverrides({
@AttributeOverride(name = "zip", column = @Column(name = "ZIP")),
private MyAddress address;
}
两个嵌入中都有一个type
字段。但该字段未映射到任何数据库字段。但我需要覆盖它。因为hibernate在运行的时候会报错。(编译良好)。有没有办法为type
嵌入和非数据库映射字段覆盖或赋予不同的名称?
注意:我正在寻找字段名称完整的解决方案。因为我不能简单地更改名称。
这也将回答我的另一个问题,再次嵌入相同的 Embeddable 覆盖所有属性。例如,我想包含具有相同MyAddress
嵌入的家庭地址、公司地址等。