2017-02-22 10 views
0

私はDeltaspikeと一緒にWildfly 10を使用しており、エンティティを永続させる問題があります。この問題は、後でそれをリフレッシュしようとするとき、またはそれを参照する別のエンティティを保持しようとしたときに発生します。リフレッシュしようとすると、エンティティが管理されていないことを示す例外が表示されます。エンティティを参照している別のエンティティを永続化しようとすると、エンティティが一時的な状態にあることを示す例外が発生します。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フィールドにはプリミティブ型を使用できません。

エンティティを保存できるようになりました。

関連する問題