执行更新/删除查询“@NamedQuery做REMOVE的例外”异常

时间:2010-06-03 16:27:05

标签: sql exception sql-update persistence

Spring Batch应用程序抛出以下异常:

19:12:40,083 ERROR main AbstractStep:213 - Encountered an error executing the step
javax.persistence.TransactionRequiredException: Executing an update/delete query

使用命名查询的代码:

entityManagerFactory.createEntityManager()
                    .createNamedQuery("removeQuery").executeUpdate();

还尝试将此代码包装在 EntityTransaction 对象的 begin commit 方法中,但没有帮助:

EntityManager em = entityManagerFactory.createEntityManager();
EntityTransaction transaction = em.getTransaction();
transaction.begin();
entityManagerFactory.createEntityManager()
                    .createNamedQuery("removeQuery").executeUpdate();
transaction.commit();
em.close();
entityManagerFactory.close();

提前谢谢

1 个答案:

答案 0 :(得分:2)

您不使用相同的实体管理器来创建交易和创建查询。

替换

entityManagerFactory.createEntityManager()
                    .createNamedQuery("removeQuery").executeUpdate();

通过

em.createNamedQuery("removeQuery").executeUpdate();