Verwenden von Java -Aufzeichnungen als JPA -Einbettungsdabellen
Posted: 12 Feb 2025, 05:00
Ich möchte Java -Datensatz s als eingebettbare Objekte mit JPA verwenden. Zum Beispiel möchte ich die ID in einen Datensatz einwickeln, damit es typeafe: < /p>
erzeugt
Es sieht also so aus, als würde Hibernate die Datensatz -ID wie eine Entität behandeln, obwohl es sich um ein @embedingable .
Das gleiche passiert mit Nicht-ID-Feldern und @embeded :
Gibt es eine Möglichkeit, @embeddable Record mit JPA/Hibernate zu verwenden?
erzeugt
Code: Select all
@Entity
public class DemoEntity {
@EmbeddedId
private Id id = new Id(UUID.randomUUID());
@Embeddable
public static record Id(@Basic UUID value) implements Serializable {}
}
< /code>
Aber wenn ich versuche, es mit Hibernate 5.4.32 zu bestehen, erhalte ich den folgenden Fehler: < /p>
org.hibernate.InstantiationException: No default constructor for entity: : com.example.demo.DemoEntity$Id
at org.hibernate.tuple.PojoInstantiator.instantiate(PojoInstantiator.java:85) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
at org.hibernate.tuple.component.AbstractComponentTuplizer.instantiate(AbstractComponentTuplizer.java:84) ~[hibernate-core-5.4.32.Final.jar:5.4.32.Final]
...
Das gleiche passiert mit Nicht-ID-Feldern und @embeded :
Code: Select all
@Embedded
private Thing thing = new Thing("example");
@Embeddable
public static record Thing(@Basic String value) implements Serializable {}