我正在进行一些测试,其中冲洗和清除不会立即显示。等待Hibernate使flush能够解决问题。这是否意味着flush是异步的?有没有关于它的官方Hibernate文档?
这失败了:
@Test
public void doTest()
Entity oldData = myDAO.load(1L);
oldData.setField("foo");
myDAO.update( oldData);
flushAndClear();
oldData= myDAO.load(oldData.getId()); // Reload
assertThat(oldData.getField() , notNullValue());
}
但这有效:
@Test
public void doTest()
Entity oldData = myDAO.load(1L);
oldData.setField("foo");
myDAO.update( oldData);
flushAndClear();
Thread.sleep(1000); /** WAITING SOME TIME*/
oldData= myDAO.load(oldData.getId()); // Reload
assertThat(oldData.getField() , notNullValue());
}
flushAndClear只是:
getCurrentSession().flush();
getCurrentSession().clear();