mach einfach das:
%Vor%Nach dem Aktualisieren der Entität haben Sie das ID-Feld mit dem richtigen Wert.
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.
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.
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%