2016-07-22 17 views
0

サブクラス(エンティティ)をそのスーパークラス(エンティティ)からOneToManyマッピングをオーバーライドさせることは可能ですか?現在、スーパークラスのエンティティとサブクラスのエンティティが同じリストにリンクしているため、おそらく "HibernateException:コレクションへの共有参照が見つかりました"というメッセージが表示されます。Hibernate:(エンティティ)スーパークラスのOneToManyマップされたフィールドをオーバーライドしますか?

(@EssociationOverrideは@Entityではなく、スーパークラスが@MappedSuperclassの場合にのみ使用できます)スーパークラスを@Entityから@MappedSuperclassに変更したくないのは、

どうすればHibernateに次のようなマップを作成できますか?最後に

@Entity 
public abstract class PetOwner { 
    @OneToMany(targetEntity = Pet.class, mappedBy = "owner") 
    public <T extends Pet> List<T> getPets() 
    ... 
} 

@Entity 
public abstract class Pet { 
    @ManyToOne(targetEntity = PetOwner.class) 
    @JoinColumn(name = "owner_id", referencedColumnName = "id") 
    public <T extends PetOwner> T getOwner() 
    ... 
} 

@Entity 
public class CatOwner extends PetOwner { 
    @Override 
    @OneToMany(targetEntity = Cat.class, mappedBy = "owner") 
    public List<Cat> getPets() 
    ... 
} 

@Entity 
public class Cat extends Pet { 
    @Override 
    @ManyToOne(targetEntity = CatOwner.class) 
    @JoinColumn(name = "owner_id", referencedColumnName = "id") 
    public CatOwner getOwner() 
    ... 
} 

答えて

0

私は@Override @Transientでサブクラスゲッター(CatOwner.getPets()とCat.getOwnerを())とマーク。

関連する問題