0

假设我有一个带有以下注释的 EJB:

@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED)

进一步假设它有一个EntityManager注入:

@PersistenceContext
private EntityManager em;

如果我在 上执行各种操作EntityManager,是否会为每个此类操作启动并提交资源本地事务?还是会有一个适合所有人的?还是 JPA 规范未定义此行为?无论是在 JPA 2.0 规范还是 EJB 3.1 规范中,我都找不到合适的段落。

我知道不会为 EJB 方法启动JTA事务,但我不清楚哪些类型的事务将对底层EntityManager. 我假设这种行为是未定义的,但我希望来自更大的 StackOverflow 社区的人更了解,或者对规范的这个领域有洞察力,或者对处理这个领域的讨论有深入的了解。

4

2 回答 2

0
于 2013-05-10T03:43:10.997 回答
0

正如 Nayan Wadekar 所指出的,EntityManager 将没有关联的事务。

在您的示例中,您指定了一个事务范围的 EntityManager (如果未另行指定,则为默认值)。这意味着需要活动事务的方法将抛出 TransactionRequiredException,例如persist

[Throws] TransactionRequiredException - if invoked on a container-managed entity manager of type PersistenceContextType.TRANSACTION and there is no transaction
于 2013-05-10T22:01:10.947 回答