我想在Hibernate中獲取上次插入的ID的ID。如何使用Hibernate獲取上次插入的ID
搜索後:
Long lastId = ((Long) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
但是,下面的代碼給了我這個錯誤:
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
請分享您的想法!
解決方案
Long lastId = ((BigInteger) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
不要忘了導入:
import java.math.BigInteger;
介意分享你要這個ID怎麼辦?一旦你獲取lastID,它就已經過時;任何其他系統用戶/線程都可以在您的lastId變量所在的時間範圍內對其進行更新。 – Gimby
我必須將該ID作爲外鍵標識存儲到另一個表中。這種情況有沒有更好的解決方案? –
是的:正確使用JPA。當你插入一個實體時,ID將在持久化之後在對象實例中設置。從對象本身獲取ID以確保您獲得正確的ID。這是出於審計目的還是什麼? – Gimby