以下問題:JPA如何將非託管實體對象與數據庫同步(按值調用)
關聯:| Shop | --1 -------- n - > |產品|
所以我有一個實體名爲店鋪,可以有很多產品。
我開發了一個叫的函數void addProductToShop(Shop shop,Product product);
它看起來是這樣的:
public void addProductToShop(Shop shop, Product product)
{
entityManager = entityManagerFactory.createEntityManager();
entityManager.getTransaction().begin();
shop = entityManager.merge(shop);
shop.getProductList.add(product);
entityManager.getTransaction().commit();
entityManager.close();
}
一切正常,並正確地寫入到數據庫中。 問題是,這兩個實體沒有在我的應用程序代碼中更新。
所以在打電話addProductToShop(shop,product);你必須更新兩個變量店鋪和產品因爲他們沒有最新的變化(因爲callByValue)。
但是作爲這個函數的消費者,我假設我的參數在調用之後被改變,而不僅僅是數據庫。 如何在每次函數調用後不要求更新店鋪和產品來實現此目的。
有什麼最佳實踐嗎?
謝謝, 亞歷克斯
如何,我應該在我的代碼使用刷新? 我無法在兩個參數上調用刷新,因爲它們不受管理。 我也不明白爲什麼**堅持()**更新對象和**合併()**不。 有人可以建議一個解決方案,我輸入這些參數做數據庫的變化,並讓他們更新爲這個函數的調用者? – Subby 2012-08-09 07:16:39