执行更新/删除查询"@NamedQuery做REMOVE的例外"

ser*_*nni 8 sql persistence exception sql-update

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

19:12:40,083 ERROR main AbstractStep:213 - Encountered an error executing the step
javax.persistence.TransactionRequiredException: Executing an update/delete query
Run Code Online (Sandbox Code Playgroud)

代码,使用命名查询:

entityManagerFactory.createEntityManager()
                    .createNamedQuery("removeQuery").executeUpdate();
Run Code Online (Sandbox Code Playgroud)

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

EntityManager em = entityManagerFactory.createEntityManager();
EntityTransaction transaction = em.getTransaction();
transaction.begin();
entityManagerFactory.createEntityManager()
                    .createNamedQuery("removeQuery").executeUpdate();
transaction.commit();
em.close();
entityManagerFactory.close();
Run Code Online (Sandbox Code Playgroud)

先感谢您

小智 2

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

代替

entityManagerFactory.createEntityManager()
                    .createNamedQuery("removeQuery").executeUpdate();
Run Code Online (Sandbox Code Playgroud)

经过

em.createNamedQuery("removeQuery").executeUpdate();
Run Code Online (Sandbox Code Playgroud)