2012-07-19 62 views
0

我只是有一個小的查詢是否刷新涉及自動持續所有以前的實體關係。這裏是我的意思是:刷新自動調用persist

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

爲什麼EntityManager的自動堅持我的shFood實體以及美食實體(shFood有一個級聯cuisineSelection堅持),即使沒有指定我堅持我的shFood?

謝謝一些澄清!

回答

1

在這種情況下,您的shFood不是新的實體實例 - 而是它已經是託管實體。沒有必要調用persist來讓已管理的實體進行管理。此實體保持管理狀態,直到管理的實體關閉或實體與持久性上下文分離爲止,例如通過detachclear

什麼happenening在你的情況:

  1. 的地方,你表現出你獲得參考管實體實例shFood代碼之前。此實例將保持管理狀態,直到它被分離。
  2. shFood.setCuisines(cuisineSelection)在持久化上下文中進行更改
  3. entityManager.flush()強制實體管理器將對持久化上下文中的實體所做的更改刷新到數據庫。對託管實體所做的所有更改都會刷新。
+0

非常感謝你Mikko。我現在終於明白管理實體真正需要的真正含義。 – 2012-07-19 05:38:43