我遇到了同样的问题,但问题出在其他地方......
所以堆栈:我使用的是 Wildfly 服务器、postgresql 和 JPA
起初,我的 persistence.xml 配置为使用 RESOURCE_LOCAL 事务,例如
<persistence-unit name="unit" transaction-type="RESOURCE_LOCAL">
我遇到了一个问题,即使该方法被标记为 @Transactional,它在发生错误时也没有进行任何回滚,但保存工作正常。
于是我决定使用事务类型的 JTA 而不是 RESOURCE_LOCAL 以便容器管理事务。
当我将我的 persistence.xml 更改为此时,它仍然无法正常工作
<persistence-unit name="unit" transaction-type="JTA">
<jta-data-source>java:jboss/datasources/unit</jta-data-source>
并且抛出了这个问题标题中的错误。
我的问题是,我是如何创建 EntityManager 的,这就是它的定义方式
@Produces
@PersistenceContext
private static EntityManager em = Persistence.createEntityManagerFactory(UNIT_NAME).createEntityManager()
解决方案?我不得不删除注释@PersistenceContext
附:对于 JTA 事务,不要忘记告诉 wildfly 数据源,例如通过这样的 CLI
data-source add --jndi-name=java:jboss/datasources/unit --name=MyDb --connection-url=jdbc:postgresql://localhost:5432/postgres --driver-name=postgresql --user-name=username --password=password