我正在尝试在Payara41服务器Java EE 7中解决此错误,此示例适用于WildFly-9 Java 7 EE和Glassfish-3.1 Java EE 6(不包含@Transactional
和@TransactionalManagement
)< / p>
@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
,但没有人帮助......
感谢您的任何建议/帮助! :)
答案 0 :(得分:0)
我知道这很老,但是希望这可以帮助某个人...
问题21363423:Throwing an application exception causes TransactionalException说
您正在从将调用以下方法的方法中引发异常 在运行时被拦截,并附加了其他逻辑:
transaction management; exception handling.
您的异常不能透明地跳过该逻辑,并且 规范(可能)说将抛出TransactionalException, 包装原始异常...
问题18888572:How do you find out what Exception caused the CDI Transaction Rollback?
显示如何使用CDI拦截器捕获异常。我无法从OP的有限信息中得知他/她的具体问题是什么,但是当我收到此异常时,我必须查看WebLogic服务器日志,并找到该条目告诉我唯一的违规行为。添加一些拦截器...