Wildfly - deltaspike - 交易未提交?

Wildfly - deltaspike - transaction not committed?

我将 Wildfly 10 与 Deltaspike 一起使用,但在持久化实体时遇到问题。当我尝试刷新它或坚持引用它的另一个实体时,问题会在稍后出现。当我尝试刷新它时,我得到指示该实体不受管理的异常。如果我尝试保留另一个引用它的实体,那就是当我收到指示该实体处于瞬态状态的异常时。

我正在使用 JTA,实体应该更早提交,因为它保存在另一个方法调用中。

我试过使用容器管理事务和 Bean 管理事务。关于这一点,似乎只有 apache-deltaspike.properties 文件对更改它有任何影响。我还手动启用了事务拦截器,但我认为这没有什么不同,因为它在 beans.xml 中启用或不显式激活它。 @Transactional 注释似乎并没有实际提交事务(我使用各种参数对其进行了测试,我本以为会出现不同的异常,但只是使用相同的异常)。

@Transactional(Transactional.TxType.REQUIRES_NEW)
//@Transactional(Transactional.TxType.NEVER)
@Loggable
protected void startSession() {
    entity = new Entity("something");
    LOGGER.warn("entity:" + entity);
    entityRepository.saveAndFlushAndRefresh(entity);

    LOGGER.warn("end - entity:" + entity.getId());
}

日志语句显示 id 为 0,未设置。现在,如果我查询序列,我会看到它在 189 次被击中...

真正的例外是当我尝试做的时候:

entityRepository.refresh(entity);

那是当我收到指示实体不受管理的异常时。正如我所指出的,我可以看到根据日志激活了事务拦截器。

有什么想法吗?

问题似乎出在较新版本的 hibernate 中,您不能对 id / version 字段使用原始类型。

我现在可以保存实体了。