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 name プロパティが、基本クラスのフィールドである電子メールのマッピングを定義します。2 番目のマッピングは、電子メールではなく、workEmail に対して行う必要があります。この変更により、目的の結果を達成できるはずです。

于 2012-03-27T09:58:30.173 に答える