我试图在Payara41服务器Java 7中解决这个错误,这个示例工作在WildFly-9 Java7EE和Glassfish-3.1JavaEE 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();后的apperas
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,但是没有人帮上忙.
(谢谢你的建议/帮助!)
发布于 2019-05-28 20:34:38
我知道这很古老,但希望这能帮到外面的人.
问题21363423:Throwing an application exception causes TransactionalException说
您正在从一个方法中抛出一个异常,该方法的调用将在运行时被拦截,并在其周围包装其他逻辑: 事务管理;异常处理 您的异常不能透明地跳过该逻辑,规范(可能)表示将抛出一个TransactionalException,包装原始异常.
问题18888572:How do you find out what Exception caused the CDI Transaction Rollback?
演示如何使用CDI拦截器捕获异常。我无法从OP的有限信息中知道他/她的具体问题是什么,但当我收到此异常时,我必须检查WebLogic服务器日志,并发现其中的条目告诉我违反了唯一的违禁品。是时候加入拦截器了..。
https://stackoverflow.com/questions/32095130
复制相似问题