0

我只是对刷新是否涉及自动保留所有先前的实体关系有一个小疑问。这就是我的意思:

shFood.setCuisines(cuisineSelection);
entityManager.flush(); 

即使我没有为我的 shFood 指定持久化,为什么 entityManager 会自动持久化我的 shFood 实体以及美食(shFood 与 foodSelection 有级联持久化)实体?

将不胜感激一些澄清!

4

1 回答 1

1

在这种情况下,您的 shFood 不是新的实体实例——而是它已经是托管实体。无需为已托管的实体调用persist 以使其托管。该实体保持托管状态,直到托管实体关闭或实体从持久性上下文中分离,例如通过detachclear

在你的情况下发生了什么:

  1. 在您展示的代码之前的某个地方,您获得了对托管实体实例的引用shFood。此实例将保持受管理状态,直到它被分离。
  2. shFood.setCuisines(cuisineSelection)改变持久性上下文
  3. entityManager.flush()强制实体管理器将对持久性上下文中的实体所做的更改刷新到数据库。对托管实体所做的所有更改都会被刷新。
于 2012-07-19T04:52:43.170 回答