我有部分,而params之間的一個一對多的關係(「部分」有很多個「PARAMS)副本孩子收集到另一個對象
我試圖做一些幼稚這樣的:。
Part sourcePart = em.find(Part.class, partIdSource);
Part destPart = em.find(Part.class, partIdDest);
Collection<Param> paramListSource = sourcePart.getParamList();
destPart.setParamList(paramListSource);
基本上我想複製所有參數從sourcePart到destPart。希望持久性提供者將自動在參數表/實體設置正確的外鍵。
上面的代碼將顯然是不行的。
有沒有簡單的方法來做到這一點,或者我必須做一個新的集合,然後添加每個參數(創建新的參數,設置屬性等)?
編輯
我第一次嘗試脫離實體就像有人在另一個線程建議,但我得到一個異常(org.hibernate.PersistentObjectException:通過堅持脫離實體:shared.entity.Param)。
Part sourcePart = em.find(Part.class, partIdSource);
// force eager loading...
((List)sourcePart.getParamList()).get(0);
Part destPart = em.find(Part.class, partIdDest);
// detach entity
org.hibernate.Session session = ((org.hibernate.ejb.EntityManagerImpl) em.getDelegate()).getSession();
session.evict(sourcePart);
//causes exception "detached entity passed to persist"
destPart.setParamList(sourcePart.getParamList());
目前還不清楚,你是否希望在參數中更改FK,以便它們指向destPart,是否要創建除FK外相同的新參數,還是希望參數能夠共享由兩部分? – Affe 2010-06-04 06:25:41
我想要新的相同的參數,除了FK。對不起,因爲它不清楚:) – Bogdan 2010-06-04 06:36:04