Hibernate embeddables: Komponente Eigenschaft nicht gefunden
Ich versuche, JPA @Embeddable
s mit Hibernate. Das Unternehmen und die einbettbaren beide haben eine Eigenschaft namens id
:
@MappedSuperclass
public abstract class A {
@Id
@GeneratedValue
long id;
}
@Embeddable
public class B extends A {
}
@Entity
public class C extends A {
B b;
}
Dies wirft ein org.hibernate.MappingException: component property not found: id
.
Möchte ich vermeiden, mit @AttributeOverrides
. Ich habe also versucht spring.jpa.hibernate.naming_strategy=org.hibernate.cfg.DefaultComponentSafeNamingStrategy
(ich bin mit Spring Boot). Dies hatte keinen Effekt (gleiche Ausnahme). Ich hingegen vermute, dass die Einstellung nicht ignoriert, da die Angabe einer nicht vorhandenen Klasse nicht zu einer Ausnahme.
Das seltsame ist, sogar mit dieser Variante
@Entity
public class C extends A {
@Embedded
@AttributeOverrides( {
@AttributeOverride(name="id", column = @Column(name="b_id") ),
} )
B b;
}
Ich bekomme immer noch den gleichen Fehler.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den naming-Strategie-Konfiguration geändert hat. Der neue Weg, wie pro die Spring-Boot-Dokumentation ist diese:
Auch, Sie müssen nicht verwendet werden
@Id
innerhalb einer@Embeddable
. Ich schuf damit ein separates@MappedSuperclass
für embeddables:Diese Weise den Tisch
C
hat zwei Spaltenid
undb_id
. Der Nachteil ist natürlich, dassA
undE
stellen einige redundency. Anmerkungen zu einem TROCKENEN Konzept sind sehr willkommen.