Ich verwende Hibernate und Anmerkungen für ORM. Ich habe Schnittstellen für alle Beans und ich verwende targetEntity für Beziehungen: Hibernate kann den Typ nicht ableiten, da der Getter eine Schnittstelle und nicht eine Bean zurückgibt.Override @ManyToOne targetEntity für @Embedded mit Schnittstellen
Ich bekomme eine MappingException (Typ konnte nicht ermittelt werden) für eingebettete Beans.
@Entity(name="FieldBean")
public class FieldBean implements Field {
...
}
@Embeddable
public class FacetBean implements Facet {
...
@ManyToOne(targetEntity = FieldBean.class)
@JoinColumn(name = "field_id")
public Field getField() {
return field;
}
}
@Entity(name = "Chart")
public class ChartBean implements Chart {
@Embedded
@AssociationOverride(
name = "field",
joinColumns = @JoinColumn(name = "category_facet_field_id")
)
public Facet getCategoryFacet() {
return categoryFacet;
}
}
Ich erhalte die MappingException: Typen kann nicht bestimmen für: Field, bei Tisch: Diagramm für Spalten: [org.hibernate.mapping.Column (Feld)]
Mit Bohnen anstelle von Schnittstellen für Property- und Getter/Setter-Deklarationen lösen das Problem, aber ich möchte bei der Verwendung von Schnittstellen bleiben. Die Verwendung von Beans für Eigenschaftsdeklarationen allein löst das Problem nicht.
Kann mir jemand in die richtige Richtung zeigen?
Ich bin mit Schnittstellen und Vererbung. Zugegeben, dies führte zu einer gewissen Komplexität auf der Ebene des ORM. Auf der anderen Seite liefert es mir die Ebene der Abstraktion, nach der ich suche. – user1966634
** Schnittstellen ** dienen zur Abstraktion der ORM-Technologie. Unter Verwendung eines MDA-Ansatzes erzeuge ich den Code der Persistenzschicht aus einem Objektmodell, einschließlich Schnittstellen, Beans und Serviceklassen. Eine alternative ORM-Technologie könnte transparent verwendet werden, indem die Schnittstellen stabil gehalten werden, aber alternative Beans und Serviceklassen erzeugt werden. – user1966634
** Vererbung ** wird aus der Datenmodellierungsperspektive benötigt, um sowohl die allgemeine als auch die spezifische Sicht auf die Daten zu unterstützen, insbesondere, aber nicht ausschließlich, auf der relationalen Datenbankebene. Trotz einiger Nachteile bleibt das Feature nützlich und vereinfacht Code auf höheren Ebenen im Anwendungsstapel. – user1966634