【问题标题】:Transactional error while commiting提交时出现事务错误
【发布时间】: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 中这是必需的,真的不知道为什么..

标签: java ejb jta stateful


【解决方案1】:

我知道这是旧的,但希望这可以帮助那里的人......

问题 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 服务器日志并找到它告诉我违反了唯一约束的条目。时间添加一些拦截器...

【讨论】:

    猜你喜欢
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2022-07-16
    相关资源
    最近更新 更多