Kann eine Unterklasse (Entität) eine OneToMany-Zuordnung von ihrer Oberklasse (Entität) überschreiben? Momentan bekomme ich "HibernateException: Gefundene Referenzen auf eine Sammlung gefunden", vermutlich weil die Entitäten der Superklassen und die Unterklassen beide auf dieselbe Liste verweisen.Hibernate: Überschreiben des zugeordneten OneToMany-Felds der Entitätsoberklasse?
(Mein Verständnis ist, dass @AssociationOverride kann nur verwendet werden, wenn die Oberklasse @MappedSuperclass, nicht @Entity. Ich möchte nicht die Oberklasse von @Entity zu @MappedSuperclass ändern, weil ich die Tabelle für die Oberklasse und die Fähigkeit, darauf abzufragen.)
Wie kann ich Hibernate map so etwas wie das folgende haben?
@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()
...
}