我不确定这是否会帮助你解决问题(即是否仍然存在),但是,在网上搜索类似问题之后。
我从持久性EntityManager创建本机查询以执行更新。
Query query = entityManager.createNativeQuery(queryString);
我收到以下错误:
引起原因:javax.persistence.TransactionRequiredException:执行更新/删除查询
许多解决方案建议在你的方法中添加@Transactional。只是这样做并没有改变错误。
一些解决方案建议向EntityManager索要a,
EntityTransaction以便你可以调用begin并提交自己。这引发了另一个错误:
引起原因:java.lang.IllegalStateException:不允许在共享的EntityManager上创建事务-使用Spring事务或EJB CMT代替
然后,我尝试了一种方法,大多数网站都说这种方法是用于应用程序管理的实体管理器,而不是容器管理的(我相信Spring是这样),那就是
joinTransaction()。
其
@Transactional装饰方法,然后调用
joinTransaction()调用EntityManager对象的前夕
query.executeUpdate(),我的本地查询更新工作。
我希望这可以帮助其他遇到此问题的人。



