[英]JPA - update more fields on entity properly
我想在許多領域對托管JPA實體進行簡單的更新。 首先,我查詢要更新的實體:
MyEntity managedEntity = entityManager.createQuery(query).getSingleResult();
然后,我需要使用不受JPA管理的新“ MyEntity”對象來更新此實體:
MyEntity notManagedEntity = new MyEntity();
當然,可以從notManagedEntity讀取每個字段並將它們設置為ManagedEntity,這將執行更新。
但是,是否有一種更輕松的方法來更新受管實體,而無需一個接一個地設置每個字段?
AFAIK,更改對托管實體的引用不是一個好主意,因為持久性上下文仍將引用舊實體,因此任何刷新都會觸發異常...當與持有集合或ManyToOne的復雜實體一起使用時,這一點尤為重要參考。
相關主題: 在JPA中更新實體的最佳方法是什么
我建議閱讀以下問題: 通過反射將所有值從一個類中的字段復制到另一類中
這看起來像是您問題的答案。 然后,您必須創建從中獲得的整個實體的副本
MyEntity managedEntity = entityManager.createQuery(query).getSingleResult();
創建Java對象的副本之后,您必須將來自實體的標識符設置為新值,然后將該新Object插入到持久層中。
從期望的角度看,它看起來有些混亂,但是如果這是要求,則至少從技術角度來看應該可行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.