2

我正在 TomEE 4.0.0 上尝试简单的 JPA 示例,但我无法让 PersistenceContextType.EXTENDED 工作

如果我使我的会话 bean 无状态并离开 PersistenceContextType 那么它工作正常

@PersistenceContext(unitName = "xxx" )
private EntityManager entityManager;

如果我将会话 bean 保持为无状态,然后尝试使用它

@PersistenceContext(unitName = "xxx", type = PersistenceContextType.EXTENDED))
private EntityManager entityManager;

它在部署时给了我一个错误,这非常好并且符合预期。

但是现在当我将我的 bean 设为@Stateful 时,它也会给我一个错误

Managed ejbs are not capable of using EntityManagers with EXTENTED persistence.  Convert your bean to a Stateful ejb or update the "java:comp/env/com.testwebservice.TestJPAService/entityManager" PersistenceContext reference to PersistenceContextType.TRANSACTION.

有人可以帮忙吗,我真的很困惑

4

1 回答 1

0

@StatefulEXTENDED 持久性上下文在 TomEE 构建和 Java EE TCK 中以多种方式进行了测试。

可能这完全是另一回事。@Stateless当您使用不正确的with组合注意时,我们会尽力警告您PersistenceContextType.EXTENDED

查看包含com.testwebservice.TestJPAService并考虑到@Stateless它在更改为 之前的事实的 JNDI 名称@Stateful,我猜这个 bean 也是@WebService非法的。 @Stateful豆子不能是@WebService豆子。如果没有适当的检查来防止这个错误,我的猜测是 bean 实际上被部署了两次;一次是@Stateful豆子,一次是 pojo @WebService。pojo Web 服务是导致错误的原因。

如果这是错误,我已经提交了一个 JIRA 供我们明确检查该条件

于 2012-02-08T21:30:56.493 回答