Ich habe die folgende Klassenstruktur (Details werden aus Gründen der Übersichtlichkeit weggelassen):
Zum Beispiel:
@Entity
class A{
@OneToMany
private List<B> b;
@OneToOne
private C c;
}
interface B {
}
@Entity
@Inheritance
abstract class Babstract implements B {
}
@Entity
@PrimaryKeyJoinColumn
class B1impl extends Babstract {
}
@Entity
@PrimaryKeyJoinColumn
class B2Impl extends Babstract {
}
Ich möchte alle zu C gehörenden B's laden. Die Klasse A verbindet B mit C. B und C wissen nichts von der Existenz des jeweils anderen und ich möchte, dass das so bleibt. Ich kenne den tatsächlichen Implementierungstyp von B nicht und es ist mir auch egal, weil ich den abstrakten Datentyp B (die Schnittstelle) verwende. Die Implementierung kann sich im Laufe der Zeit ändern, zum Beispiel kann eine neue Implementierung von B in einer neuen Version hinzugefügt werden.
Ist dies mit JPA möglich und wie kann ich das tun? Wenn ich richtig liege, kann ich das targetEntity-Attribut nicht verwenden, weil ich die implementierende Klasse nicht kenne und es mir egal ist. B ist polymorph.