安らかなインターフェイスを提供する小さなアプリケーションを作成しようとしています。これは、現在の 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 を使用。