AFAIK,有两种类型的实体管理器。 1.集装箱管理实体经理 2.应用程序管理实体管理器
以下是我的代码:
@PersistenceContext(unitName = "", type = Transaction)
EntityManager em;
public void persist(T entity) {
em.persist(entity)
}
问题: 执行代码时会抛出异常:TransactionRequireException 为什么会有这种例外?将@Resource UserTransaction添加到方法persist()后,没有发生TransactionRequireException。我不知道UserTransaction属于JTA吧。
EntityTransaction et = em.getTransaction();
参考上面的代码,为什么JTA事务类型不能调用getTransaction()?
扩展的JTA Transaction em可以在EJB之外使用吗?
请有人提供JDBC事务类型的源代码示例。
答案 0 :(得分:2)
JPA持久性单元可以是JTA或RESOURCE_LOCAL。
如果您使用JTA,则必须通过SessionBeans或直接访问JTA来使用JTA进行事务处理。
请参阅, http://en.wikibooks.org/wiki/Java_Persistence/Runtime#Java_Enterprise_Edition