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 字段使用原始类型。
我现在可以保存实体了。
我将 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 字段使用原始类型。
我现在可以保存实体了。