【问题标题】:Hibernate Jpa batch insert not workingHibernate Jpa批量插入不起作用
【发布时间】:2015-04-21 14:43:16
【问题描述】:

我正在使用 hibernate jpa 执行批量更新。

它没有给出任何错误或异常,但每次给出时事务都会回滚。

2015-04-21 16:30:33,548 ERROR [org.jboss.as.ejb3] (Thread-344 (HornetQ-client-global-threads-462057890)) javax.ejb.EJBTransactionRolledbackException: no transaction is in progress

这是我的批量更新代码

getEm().getTransaction().begin();
    System.out.println("transaction started--------------");
    try{    
    for(Receipt ReceiptEntity : arrReceiptEntity){


        getEm().persist(ReceiptEntity);


    }
    getEm().getTransaction().commit();
    System.out.println("commited");
    }catch(Exception exception){
        System.out.println("error----------------------------------------------------------------------");
        if(getEm().getTransaction().isActive())
            getEm().getTransaction().rollback();
            LOG.error(exception);
    }finally
    {
        getEm().flush();
        getEm().clear();
        getEm().close();
    }

我正在使用 Postgres 服务器 9.4.1 请帮我弄清楚我做错了什么。 我检查了其他类似的帖子,但没有任何帮助。

更新: 我得到了解决方案: 问题是我正在刷新已经刷新的事务。因此它没有给我任何正在进行的事务错误以及我在上面发布的错误。所以我只是删除了`getEm().flush();和 getEm().clear();从 finally 块开始工作:)

【问题讨论】:

  • 您是否尝试在 IDE(如 Eclipse)中添加断点并查看它在哪一行失败?
  • 感谢问题和更新,请考虑发布(并接受)它作为答案。
  • getEm().getTransaction().commit();的代码已经刷新了数据。

标签: java hibernate postgresql jpa batch-updates


【解决方案1】:

我得到了解决方案:问题是我正在刷新已经刷新的事务。因此它给了我没有正在进行的事务错误以及我在上面发布的错误。所以我刚刚从 finally 块中删除了getEm().flush(); and getEm().clear();它开始工作了:)

希望它能帮助其他人..

【讨论】:

    猜你喜欢
    • 2021-04-23
    • 2011-02-15
    • 2021-03-09
    • 1970-01-01
    • 2018-10-22
    • 2016-11-20
    • 2013-07-23
    • 2016-09-24
    • 2018-11-14
    相关资源
    最近更新 更多