2011-12-09 5 views
2

拡張エンティティの列名を上書きする適切な方法を設定するのに助けになる人がいますか?jpa複数の埋め込みプロパティのAttributeOverride

Embedeable:

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

親エンティティ:

エンティティ拡張
@Entity 
AddressBook 
@Embedded 
@AttributeOverrides({ 
     @AttributeOverride(name="email", column = @Column(name="email_address")) 
}) 
private Email email 

:私はworkEmailは、OKである "work_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; 

をしかし、home_emailは埋め込み可能なファイルにもともと定義されている "email_address"列にマップされています。 「home_email」列にマップする必要があります。

は、私はW/Oの成功を試してみました:あなたの助けのための

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

おかげで、 ジェス

答えて

0

を最後のマッピングでは、あなたの両方AttributeOverrideのnameプロパティは、基本クラスからのフィールドである電子メールのマッピングを定義します。 2番目のマッピングは、仕事用メールではなく、メール用でなければなりません。この変更により、望ましい結果を達成できるはずです。

+0

org.hibernate.MappingException:エンティティのマッピングの繰り返し列:... server.model.DeluxAddressBook列:email_address。これはちょうど私が試みたexcersizeです。私たちが取った問題は、別々のエンティティを作成することでした。 – jessarah

関連する問題