我想在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