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()
...
}