我正在尝试执行CRUD,并且我的persistence.xml具有非JTA -data-source,但是当我尝试执行诸如创建、更新或删除之类的操作时,我收到一条消息:使用JTA时无法使用EntityTransaction
muy代码的一个示例:
@Transactional
public void destroy(T entity) throws Exception
{
EntityManager em = getEntityManager();
try
{
em.getTransaction().begin();
em.remove(em.merge(entity));
em.getTransaction().commit();
}
catch(Exception e)
{
em.getTransaction().rollback();
throw new Exception(e);
}
finally
{
if (em.isOpen())
{
em.close();
}
}
}我的坚持:
<persistence-unit name="namePU" transaction-type="RESOURCE_LOCAL">
<non-jta-data-source>database</non-jta-data-source>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<properties/>
</persistence-unit>发布于 2020-08-02 16:38:46
基于Transactional注释,您似乎正在使用Spring的事务管理。在这种情况下,尝试通过em.getTransaction()手动控制事务是没有意义的。此外,我不知道您是如何获得EntityManager的,但这也可能会干扰Spring的事务管理。
要么坚持Spring的声明式事务管理方式(我有更好的想法),要么删除Transactional和EntityManager注入,自己管理PU和事务。
https://stackoverflow.com/questions/63210938
复制相似问题