Heim >Java >javaLernprogramm >Wie kann ich Datenbanksequenzen für Nicht-ID-Spalten in Hibernate JPA generieren?

Wie kann ich Datenbanksequenzen für Nicht-ID-Spalten in Hibernate JPA generieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-30 07:03:19774Durchsuche

How Can I Generate Database Sequences for Non-ID Columns in Hibernate JPA?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn