我想在Hibernate中获取最后一个插入值的id。
搜索后:
Long lastId = ((Long) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
但是下面的代码给我这个错误:
JAVAClassCastException:java。数学无法将BigInteger转换为java。朗·朗
请分享你的想法!
解决方案
Long lastId = ((BigInteger) session.createSQLQuery("SELECT LAST_INSERT_ID()").uniqueResult()).longValue();
不要忘记导入:
导入java.math.大整数;
您只需使用save,它返回一个可序列化的对象,该对象实际上是最后一个插入id。示例代码:
Session session=this.getSessionFactory().getCurrentSession();
int result = -1;
try {
Serializable ser = session.save(paper);
if (ser != null) {
result = (Integer) ser;
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
试运行:
int result = paperService.save(paper);
System.out.println("The id of the paper you just added is: "+result);
以下是输出:
The id of the paper you just added is: 3032
public Integer save(Smartphones i) {
int id = 0;
Session session=HibernateUtil.getSessionFactory().openSession();
Transaction trans=session.beginTransaction();
try{
session.save(i);
id=i.getId();
trans.commit();
}
catch(HibernateException he){}
return id;
}
错误很明显。它返回的是biginger
而不是long
您必须将它赋给一个Bigintger
,并从中获取long Value()
。
问题内容: 我想在Hibernate中获取最后插入的值的ID。 搜索后: 但是以下代码给了我这个错误: java.lang.ClassCastException:无法将java.math.BigInteger强制转换为java.lang.Long 请分享您的想法! 解 不要忘记导入: 导入java.math.BigInteger; 问题答案: 错误很明显。它回来了而不是 您必须将其分配给。从中得到
我插入批量插入laravel 5像这样: 知道如何获取最后一个插入的id吗?
我将如何创建事务、插入行、提交事务并获取最后插入的id。所以该方法应该返回一个
问题内容: 我正在掌握PDO的基础知识。 但是我试图获取插入的行的ID,我使用: 我遇到的教程都是关于交易的,但是我没有使用交易! 问题答案: 您可能正在寻找lastInsertId。“返回最后插入的行或序列值的ID”。
问题内容: 我有一个称为hibernate的实体类。 我能够正确地获取属于该类的现有项目,因此我认为这与类的映射无关。 但是,当我尝试插入新项目时,出现以下错误: 在下面的代码中: 如果我不这样做,那么新任务就不会插入数据库中。 我究竟做错了什么? 编辑:也不起作用 问题答案: 在此链接的帮助下可以使用此工具:http : //www.coderanch.com/t/487173/ORM/data
我有一个名为Task的实体类,它在hibernate中映射。 我能够正确获取属于这个类的现有项目,所以我不认为这是类映射的问题。 但是,当我尝试插入新项目时,我会收到以下错误: 在以下代码中: 如果我不执行saveOrUpdate(),则新任务不会插入到数据库中。 我做错了什么? 编辑:<代码>会话。保存(任务)也不起作用