2

有人可以帮我设置正确的方法来覆盖扩展实体中的列名。

可嵌入:

@Embedable
Email
@Column(name = "email_adress")
private string email;

父实体:

@Entity
AddressBook
@Embedded
@AttributeOverrides( {
        @AttributeOverride(name="email", column = @Column(name="email_address") )
} )
private Email email

扩展实体:

@Entity
@AttributeOverrides( {
        @AttributeOverride(name="email", column = @Column(name="home_email") )
} )
DeluxAddressBook extends AddressBook
@Embeded 
@AttributeOverrides( {
        @AttributeOverride(name="email", column = @Column(name="work_email") )
} )
private Email workEmail;

在最后一个实体中,我将 workEmail 映射到“work_email”列,这没问题,但是 home_email 映射到最初在可嵌入文件中定义的“email_address”列。它应该映射到“home_email”列。

我试过没有成功:

@AttributeOverride(name="email.email", column = @Column(name="home_email") )

谢谢你的帮助,杰斯

4

1 回答 1

0

在最后一个映射中,您的两个 AttributeOverride 名称属性定义了电子邮件的映射,该映射是来自基类的字段。第二个映射应该用于 workEmail 而不是电子邮件。通过此更改,您应该能够达到预期的结果。

于 2012-03-27T09:58:30.173 回答