【发布时间】:2015-11-12 17:32:51
【问题描述】:
我正在尝试解决 Payara41 服务器 Java EE 7 中的此错误,此示例适用于 WildFly-9 Java 7 EE 和 Glassfish-3.1 Java EE 6(没有 @Transactional 和 @TransactionalManagement)
@Stateful
@Transactional //default TxType.REQUIRED
@TransactionManagement(TransactionManagementType.BEAN)
public class ImprovementDaoImpl extends AbstractBaseDaoClass implements ImprovementDao {
/*^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/
@PersistenceContext(unitName = "pu", type = PersistenceContextType.EXTENDED)
private EntityManager em;
@Resource
private UserTransaction tx;
...
}
这是一些堆栈跟踪,执行 tx.flush(); 后的结果:
javax.transaction.TransactionalException: Managed bean with Transactional annotation and TxType of REQUIRED encountered exception during commit javax.transaction.RollbackException: Transaction marked for rollback.
(...)
Caused by: javax.transaction.RollbackException: Transaction marked for rollback.
到目前为止,我已经尝试使用拦截器和@TransactionAttribute,但没有任何帮助...
感谢您的任何建议/帮助! :)
【问题讨论】:
-
@Stateful和@TransactionalManagement还不够吗?为什么你需要这里@Transactional? -
@slwk 错误相同.. :|在 WildFly 中这是必需的,真的不知道为什么..