簡體   English   中英

JPA-正確更新實體上的更多字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM