Heim >Java >javaLernprogramm >Wie kann ich Datenbanksequenzen für Nicht-ID-Spalten in Hibernate JPA generieren?
Verwenden einer Datenbanksequenz für Nicht-ID-Spalten in Hibernate JPA
Wenn Sie mit Hibernate als JPA-Anbieter arbeiten, kann es sein, dass dies erforderlich ist um Werte für Spalten zu generieren, die nicht Teil des Bezeichners sind. Leider ist die @GeneratedValue-Annotation, die häufig zum automatischen Inkrementieren von Primärschlüsseln verwendet wird, in diesem Szenario nicht anwendbar.
Erstens ist es wichtig zu verstehen, dass Hibernate/JPA nicht automatisch Werte für Nicht-ID-Eigenschaften generiert. Die Annotation @GeneratedValue wird ausschließlich zur Verwaltung der Primärschlüsselgenerierung verwendet. Stattdessen werden von der Datenbank generierte Werte erwartet.
Um diese Einschränkung zu überwinden, sollten Sie die Erstellung einer separaten Entität mit einer generierten Kennung in Betracht ziehen, die als „Ersatzschlüsselentität“ bezeichnet wird. Die betreffende Nicht-ID-Spalte kann dann mithilfe einer OneToOne-Beziehung dieser Ersatzentität zugeordnet werden.
Beispielimplementierung:
// Surrogate Key Entity @Entity public class SurrogateEntity { @Id @GeneratedValue(...) private Long number; } // Main Entity @Entity public class MyEntity { @Id private Long id; @OneToOne(...) private SurrogateEntity myVal; }
Bei diesem Ansatz wird der Wert für die myVal-Eigenschaft wird von der Datenbank beim Erstellen einer neuen MyEntity-Instanz generiert. Mit dieser Problemumgehung können Sie die datenbankgenerierten Werteverarbeitungsfunktionen von Hibernate für Nicht-ID-Spalten nutzen.
Das obige ist der detaillierte Inhalt vonWie kann ich Datenbanksequenzen für Nicht-ID-Spalten in Hibernate JPA generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!