toplink-essentials

___ qstnhdr ___ Warum JPA persist () keine primäre ID für die automatische Erhöhung generiert? ___ answer11535164 ___

mach einfach das:

%Vor%

Nach dem Aktualisieren der Entität haben Sie das ID-Feld mit dem richtigen Wert.

    
___ answer4876131 ___

Das Problem ist, dass Sie die IDENTITY-ID-Generierung verwenden. Die IDENTITY-ID-Generierung kann keine Vorbelegung vornehmen, da sie das INSERT zum Generieren der ID benötigt. TABELLE und SEQUENZ ID Generation Unterstützung Vorallokation, und ich würde immer empfehlen die Verwendung dieser, und nie IDENTITY wegen dieses Problems und wegen der Leistung.

Sie können die ID auslösen, die bei der IDENTITY-ID-Generierung generiert wird, indem Sie flush () aufrufen.

    
___ tag123java ___ Java (nicht zu verwechseln mit JavaScript oder JScript oder JS) ist eine universelle objektorientierte Programmiersprache, die für die Verwendung in Verbindung mit der Java Virtual Machine (JVM) entwickelt wurde. "Java-Plattform" ist der Name für ein Computersystem, auf dem Tools zum Entwickeln und Ausführen von Java-Programmen installiert sind. Verwenden Sie dieses Tag für Fragen, die sich auf die Java-Programmiersprache oder Java-Plattform-Tools beziehen. ___ tag123jpa ___ Die Java Persistence API (JPA) ist eine Java-Spezifikation für den Zugriff, die Speicherung und die Verwaltung von Daten zwischen Java-Objekten / Klassen und einer relationalen Datenbank. Es ist Teil der EJB 3.0-Spezifikation und der Industriestandard für ORM (Object to Relational Mapping). ___ answer4872694 ___

Wir verwenden auch SQL Server 2008 und es funktionierte nie für mich, daher führe ich immer die separate Abfrage %code% aus, um die eingefügte ID zu erhalten.

Der Grund, den ich im Internet gefunden habe, war, dass die Auto-ID (IDENTITY) von der Datenbank verwaltet und nie in Entity abgerufen wird, solange Sie die Zeile nicht committen oder die Informationen manuell aus der Datenbank abrufen.

    
___ tag123toplinksessentials ___ Die Implementierung der Java Persistence API bei GlassFish ___ qstntxt ___

Ich verwende JPA toplink-essential und SQL Server 2008

Mein Ziel ist es, den Primärschlüsselwert der Daten zu erhalten, die in die Tabelle eingefügt werden. Ich weiß in JDBC, gibt es GetInsertedId () wie Methode, die Ihnen die ID der Auto-Inkrement-Primär-ID geben (aber das ist nach der Insert-Anweisung ausgeführt)

In JPA habe ich herausgefunden, dass %code% den Trick machen kann.

%Vor%

Wenn ich jetzt den Code unten ausführe, sollte er mir die automatisch inkrementierte ID geben, aber er gibt NULL zurück ...

%Vor%     
___
1
Antwort

JPA - Speichern von Änderungen ohne persist () aufgerufen

Wir verwenden Toplink-Implementierung von JPA + Spring + EJB. In einem unserer EJBs haben wir so etwas: %Vor% Im Grunde sollte diese updateUser-Methode den Namen des Benutzers mit der angegebenen ID aktualisieren. Aber der Autor dieser Metho...
23.11.2009, 18:15
3
Antworten

Warum JPA persist () keine primäre ID für die automatische Erhöhung generiert?

Ich verwende JPA toplink-essential und SQL Server 2008 Mein Ziel ist es, den Primärschlüsselwert der Daten zu erhalten, die in die Tabelle eingefügt werden. Ich weiß in JDBC, gibt es GetInsertedId () wie Methode, die Ihnen die ID der Auto...
02.02.2011, 04:46