首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wildfly - deltaspike -事务未提交?

Wildfly - deltaspike -事务未提交?
EN

Stack Overflow用户
提问于 2017-02-22 12:12:27
回答 1查看 364关注 0票数 0

我正在使用Wildfly 10和Deltaspike,但在持久化一个实体时遇到了问题。稍后,当我尝试刷新它或持久化引用它的另一个实体时,问题就出现了。当我尝试刷新它时,我得到了一个异常,指示该实体不是托管的。如果我试图持久化引用它的另一个实体,那就是当我得到指示该实体处于瞬态的异常时。

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

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

代码语言:javascript
复制
@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,因为被命中了这么多次……

实际的例外是当我尝试这样做的时候:

代码语言:javascript
复制
entityRepository.refresh(entity);

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

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-23 01:37:44

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

我现在可以保存实体了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42382587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档