首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用JTA时不能使用EntityTransaction。使用非jta

在使用JTA时不能使用EntityTransaction。使用非jta
EN

Stack Overflow用户
提问于 2020-08-02 07:18:48
回答 1查看 136关注 0票数 0

我正在尝试执行CRUD,并且我的persistence.xml具有非JTA -data-source,但是当我尝试执行诸如创建、更新或删除之类的操作时,我收到一条消息:使用JTA时无法使用EntityTransaction

muy代码的一个示例:

代码语言:javascript
复制
@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();
        }
    }
}

我的坚持:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-02 16:38:46

基于Transactional注释,您似乎正在使用Spring的事务管理。在这种情况下,尝试通过em.getTransaction()手动控制事务是没有意义的。此外,我不知道您是如何获得EntityManager的,但这也可能会干扰Spring的事务管理。

要么坚持Spring的声明式事务管理方式(我有更好的想法),要么删除TransactionalEntityManager注入,自己管理PU和事务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63210938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档