Java Hibernate flush()是同步的还是异步的?

Java Hibernate flush()是同步的还是异步的?,java,hibernate,asynchronous,flush,Java,Hibernate,Asynchronous,Flush,我正在做一个测试,在这个测试中,冲洗和清晰的颜色是看不见的。等待Hibernate刷新解决了这个问题。这是否意味着flush是异步的?有关于它的官方Hibernate文档吗 这失败了: @Test public void doTest() Entity oldData = myDAO.load(1L); oldData.setField("foo"); myDAO.update( oldData); flushAndClear(); oldData=

我正在做一个测试,在这个测试中,冲洗和清晰的颜色是看不见的。等待Hibernate刷新解决了这个问题。这是否意味着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();

您正在显示不相关的代码。
fooInsert()
flushAndClear()
checkIsInserted()
?我需要知道的是,在返回刷新后,我是否保证刷新过程已经完成。为什么代码是相关的?当你问一个关于代码的问题时,代码总是相关的。你可能在方法中做了各种愚蠢的事情,这会导致未定义或不稳定的行为。添加了一些代码,但这实际上是一个简化问题,无论有没有代码,问题都非常简单:“刷新同步吗?”,而不是“我如何做x?”提供一种聪明的方法使上述代码在没有睡眠的情况下工作并不能回答基本问题。