java - 使用启用了符合 JPA 的事务访问的 JTA 时无法访问事务

标签 java hibernate jpa transactions entitymanager

我有一个注入(inject) @PersistenceContext 的事务管理器上下文注释。每次我尝试使用 em.getTransaction().begin 开始交易时我收到错误消息的异常

Transaction is not accessible when using JTA with JPA-compliant transaction access enabled

我知道我应该注入(inject) UserTransaction或使用 @Transactional注释,但我想知道这种行为的原因。

最佳答案

我认为你应该注入(inject)一个容器管理的事务。
就像是:

@Resource
private UserTransaction transaction;

public method() {
  try {
     transaction.begin();
     ...do some persistence...
     transaction.commit();
  } catch (Exception e) {
     transaction.rollback();
  }
}
或者
如果您不需要这样的控制,您可以在您的方法上使用 @Transaction 注释。
希望能帮助到你。

关于java - 使用启用了符合 JPA 的事务访问的 JTA 时无法访问事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58464770/

相关文章:

java - 创建通用 API post body 请求?

java - 用于 API 不同部分的多个 ObjectMapper

hibernate - Grails-在后台运行TCP线程

java - Hibernate Search 尝试猜测未索引实体的字段桥

jpa - 如何为 Spring Data JPA 存储库管理数据库连接?

java - 是否可以通过不抛异常的基类的调用方法抛出java异常?

java - 为什么变量在循环内可见而在循环外看不到?

java - Hibernate缓存锁定错误

java - 如何使用 java config 而不是 XML 声明存储库填充器 bean?

java - 登录认证-空指针异常