2012-10-23 3 views
5

これは私の抽象父である:hibernateコレクション結合列をオーバーライドする方法は?

@MappedSuperclass 
public abstract class AbstractEntity implements Serializable { 

    @OneToMany(fetch = FetchType.LAZY) 
    @JoinColumn(name = "entity_no", referencedColumnName = "MY_COLUMN") 
    private Set<CLASS_TYPE> list; 
} 

私のすべてのエンティティは、このセットを持っていますが、各エンティティは異なるreferencedColumnNameを持っています。

@JoinColumnアノテーションだけをオーバーライドする方法はありますか?

答えて

7

AssociationOverride注釈を使用できます。あなたの場合は次のようになります:

@Entity 
@AssociationOverrides({ 
    @AssociationOverride(name = "list", 
     joinColumns = @JoinColumn(referencedColumnName = "COLUMN_NEW_NAME")) 
}) 
public class ConcreteEntity extends AbstractEntity { 

} 
0

フィールドではなくプロパティ(ゲッター)でアノテーションを定義すると、各サブクラスでpublic Set<CLASS_TYPE> getList()をオーバーライドし、別々に@JoinColumnを定義することができます。

関連する問題