Heim >Java >javaLernprogramm >Wie kann ich im Ruhezustand Datenbanksequenzwerte für Nicht-ID-Spalten generieren?
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!