Wie kann ich get last inserted id mit Hibernate

Möchte ich für das abrufen der zuletzt eingefügten Wert der id in den Ruhezustand versetzt werden.

Suche nach:

Long lastId = ((Long) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();

Aber der folgende code gibt mir diese Fehlermeldung:

java.lang.Classcastexception-Fehler: java.math.BigInteger nicht cast auf java.lang.Lange

Bitte teilen Sie Ihre Gedanken!

Lösung

Long lastId = ((BigInteger) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();

Vergessen Sie nicht, zu importieren:

import java.math.BigInteger;

  • Geist teilen, was Sie tun werden, mit dieser ID? Sobald Sie Holen die lastID es ist schon veraltet; jedes andere system, user/thread aktualisieren, damit Sie in den Zeitrahmen, dass Ihre lastId variable im Gültigkeitsbereich befindet.
  • Ich habe zu speichern, die id einer anderen Tabelle als foreign key id. Gibt es eine bessere Lösung für diese situation?
  • Ja: verwenden JPA richtig. Beim einfügen einer Entität, die IDS werden in die Objekt-Instanz nach anhaltenden es. Holen Sie sich die ID von dem Objekt selbst, um sicherzustellen, dass Sie die korrekte ID. Ist diese für Prüfzwecke oder so?
  • Uh bin ich davon ausgegangen, JPA, aber das gleiche gilt, wenn Sie mit der Hibernate-API direkt.
  • Get last inserted Id sehr einfach mit diesem stackoverflow.com/questions/25561681/...
  • Danke. Diese Lösung funktioniert gut für Hibernate 4 auf MySql 5.6. Hier ist mein code: int postID = Math.toIntExact(((BigInteger) getSession().createNativeQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue());

Schreibe einen Kommentar