当前位置: 首页 > 知识库问答 >
问题:

如何使用Hibernate获取上次插入的id

向安福
2023-03-14

我想在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.大整数;

共有3个答案

蒋嘉实
2023-03-14

您只需使用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
汪安然
2023-03-14
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;
}
莫誉
2023-03-14

错误很明显。它返回的是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(),则新任务不会插入到数据库中。 我做错了什么? 编辑:<代码>会话。保存(任务)也不起作用