2017-02-22 63 views
0

我使用Wildfly 10 Deltaspike一起,并具有持续性的实体问题。当我尝试刷新它或者坚持引用它的另一个实体时,问题会在稍后出现。当我尝试刷新它时,我得到指示实体未被管理的异常。如果我试图坚持引用它的另一个实体,那就是当我得到指示该实体处于瞬态状态的异常时。Wildfly - 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); 

这时候,我得到的表示实体未被管理的异常。正如我所指出的,我可以看到事务拦截器根据日志被激活。

任何想法?

回答

0

该问题似乎是在更新版本的hibernate中,不能使用id/version字段的基本类型。

我现在能救实体。