Wildfly JPA:如何确保 EJB 查询在事务中

Wildfly JPA: How to ensure that an EJB query is in a Transaction

我想从 Wildfly JEE 上的 Java 实体执行更新查询。 这是我更新实体的方法:

entry.setProcessed(Boolean.TRUE);
entry.setName("Fred");
em.persist(entry);

但是它不工作,它给我一个错误:

2016-12-09 17:23:23,226 ERROR [stderr] (default task-4) javax.persistence.TransactionRequiredException: WFLYJPA0060: Transaction is required to perform this operation (either use a transaction or extended persistence context)

好的,所以我需要一笔交易。但是我如何创建或加入交易呢?

以下是我设置 PersistenceContext 和 EntityManager 的方法:

@PersistenceContext (unitName = "config", type=PersistenceContextType.EXTENDED)
private EntityManager em;

我试过em.joinTransaction(),但这需要一个已经创建的交易。 em.persist ()` 不起作用,因为没有交易。事务应该由容器管理。我找不到关于如何设置容器或配置 PersistenceContext 的好参考。

尝试在您的 class

上添加注解 @Stateless

示例:

@Stateless
public class VehicleRepo {

}