zoukankan      html  css  js  c++  java
  • javax.persistence.TransactionRequiredException: Executing an update/delete query

    最近在springboot中整合jpa的时候碰到一个异常,异常如下

    javax.persistence.TransactionRequiredException: Executing an update/delete query
    at org.hibernate.query.internal.AbstractProducedQuery.executeUpdate(AbstractProducedQuery.java:1496)

    该异常一般出现在执行更新删除操作时出现,jpa要求执行这些操作时需要加上事务管理
    当使用@Query调用自定义sql时在执行方法前加上@Modifying@Transactional一般就能解决
    但是开发过程中由于反复出现调用自定义sql的场景,所以为了调用方便决定利用EntityManager.Query做个封装,然后就出问题了…利用EntityManager执行update语句即使加上了@Modifying@Transactional仍然出现Executing an update/delete query的异常,在反复查找后终于找到一个解决方案,如下:

    public int sqlUpdate(String sql,String[] arrs){
    EntityManager em=emf.createEntityManager();
    Query query = em.createNativeQuery(sql);
    for(int i = 0; i < arrs.length;i++){
    query.setParameter(i+1,arrs[i]);
    }
    em.getTransaction().begin();
    int num = query.executeUpdate();
    em.getTransaction().commit();
    em.close();
    return num;
    }


    利用EntityManager内的事务控制器进行事务管理
    ————————————————
    版权声明:本文为CSDN博主「言一木」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_37769855/article/details/91437305

  • 相关阅读:
    iOS 字典实现原理
    IOS中armv7,armv7s,arm64以及i386和x86_64讲解
    SDWebImage源码解析
    iOS Runtime的消息转发机制
    二叉树的遍历
    LINUX 常用命令 ps 详解
    LINUX 文件权限详解
    LINUX查看内存使用情况 free
    PHP isset() empty() isnull() 的区别
    PHP unset()函数销毁变量 但没有实现释放内存
  • 原文地址:https://www.cnblogs.com/renjiaqi/p/11613774.html
Copyright © 2011-2022 走看看