1

私は(トランザクション管理のために)Springで休止状態を使用しており、そのようなDAOを持っています

@Transactional
class Dao{

public save(Entity e){
//stored an entity
Entity saved = entityManager.merge(e);

//flush the dataset to the db
entityManager.flush();

//updates the saved entity with a stored procedure
entityManger.createNameQuery(STORED_PROCEDURE).setParameter(0, saved.getId()).executeUpdate();
}
}

これは、次の環境で実行され、結果が異なります。

  • JUnit: ここではすべて正常に動作します。エンティティが保存され、保存されたデータセットがストアド プロシージャによって更新されます。
  • Glassfish 上の EJB: ストアド プロシージャが最初に実行され、次に保存操作が実行されます (休止状態からの SQL コマンドをログに記録します)。フラッシュが実行されていないようです。

その結果、ストアド エンティティにはストアド プロシージャの更新が含まれません。Glassfish環境で操作が異なる順序で実行され、Junitテストケースですべてが正常に機能する理由がわかりません。

何か案は?

4

0 に答える 0