我只是有一个小问题,关于flush是否涉及自动持久化所有以前的实体关系。我的意思是:
shFood.setCuisines(cuisineSelection);
entityManager.flush(); 为什么entityManager自动持久化我的shFood实体以及菜肴(shFood有一个级联持久化cuisineSelection)实体,即使我没有为我的shFood指定persist?
如果能澄清一下会很感谢!
发布于 2012-07-19 12:52:43
在这种情况下,您的shFood不是新的实体实例-相反,它已经是托管实体。不需要为已经被管理的实体调用persist来使它们成为被管理的实体。在关闭entity managed或实体与持久性上下文分离之前,此实体将一直处于托管状态,例如,通过detach或clear。
在你的案例中发生了什么:
shFood的引用。此实例将一直处于托管状态,直到detached.shFood.setCuisines(cuisineSelection)在持久性中做出更改contextentityManager.flush()强制实体管理器将对持久性上下文中的实体所做的更改刷新到数据库。对托管实体所做的所有更改都将刷新。https://stackoverflow.com/questions/11553901
复制相似问题