javax.persistence.TransactionRequiredException: Executing an update/delete query

Posted renjiaqi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于javax.persistence.TransactionRequiredException: Executing an update/delete query的主要内容,如果未能解决你的问题,请参考以下文章