2017-02-22 231 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字段的基本類型。

我現在能救實體。