1

安らかなインターフェイスを提供する小さなアプリケーションを作成しようとしています。これは、現在の hibernate-version と比較的良好に連携して機能します。

テストしようとすると、次のように変更するためのサーバー側コード:

EntityManager manager = // [...]
manager.getTransaction.begin();
AEntity entity1 = manager.find(AEntity.class, 4711);

entity1.setSomething("whatever");
manager.merge(entity1);

manager.getTransaction.commit();
manager.close();

通常、これは機能するはずです。しかし、JUnit でテストする場合はそうではありません。

EntityManager manager = // [...]
// insert some test data

Response r1 = target(url).request().put(someAEntityChangeInfo);
assertEquals(200, r1.getStatus());
manager.refresh(mAEntity);
assertEquals("whatever", mAEntity.getSomething()); // was set and commited on server-side

mAEntity最後のアサートは、 (更新する必要がある) 古いデータが含まれていると言って失敗します。また、1 回 (ただし 1 回だけ) アサートが正常だったので、この動作が競合状態であるかどうかもわかりません。

アサートする前にデータが本当にコミットされたことを確認する方法は?

MariaDB、MariaDB Connector/J、Hibernate 5.0.7、Jersey 2.22.1 を使用。

4

1 に答える 1