Heim >Java >javaLernprogramm >Wie kann ich im Ruhezustand Datenbanksequenzwerte für Nicht-ID-Spalten generieren?

Wie kann ich im Ruhezustand Datenbanksequenzwerte für Nicht-ID-Spalten generieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-29 05:47:11462Durchsuche

How Can I Generate Database Sequence Values for Non-ID Columns in Hibernate?

Hibernate-Sequenz für Nicht-ID-Spalten

Die Verwendung von Datenbanksequenzen zum Generieren von Werten für Nicht-Primärschlüsselspalten im Ruhezustand ist eine häufige Anforderung. Leider bietet der Ruhezustand derzeit keine integrierte Methode, um dies zu erreichen.

Die Annotation @GeneratedValue kann nur in Verbindung mit @Id verwendet werden, um Werte für Primärschlüssel automatisch zu generieren. Die Herausforderung entsteht, weil Hibernate davon ausgeht, dass Nicht-ID-Eigenschaften von der Benutzeranwendung verarbeitet werden sollten.

Um diese Einschränkung zu überwinden, besteht eine Problemumgehung darin, eine separate Entität mit einer automatisch generierten ID zu erstellen. Diese Entität ist dann für die Generierung des Sequenzwerts verantwortlich, der der Nicht-ID-Eigenschaft in der Zielentität zugewiesen werden kann.

Betrachten Sie das folgende Beispiel:

@Entity
public class GeneralSequenceNumber {
  @Id
  @GeneratedValue(...)
  private Long number;
}

@Entity
public class MyEntity {
  @Id
  private Long id;

  @OneToOne(...)
  private GeneralSequenceNumber myVal;
}

In diesem Szenario a Es wird eine neue Instanz von GeneralSequenceNumber erstellt und das Nummernfeld wird automatisch generiert. Dieser Wert wird dann während der Entitätspersistenz der myVal-Eigenschaft in MyEntity zugewiesen.

Während diese Problemumgehung eine zusätzliche Entität hinzufügt, bietet sie eine Lösung für die Verwaltung von Nicht-ID-Eigenschaftssequenzen in Hibernate. Bis ein nahtloserer Ansatz implementiert ist, bietet diese Methode eine praktische Lösung für diesen häufigen Anwendungsfall.

Das obige ist der detaillierte Inhalt vonWie kann ich im Ruhezustand Datenbanksequenzwerte für Nicht-ID-Spalten 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