【发布时间】:2018-09-04 15:48:22
【问题描述】:
我想对托管 JPA 实体的许多字段进行简单更新。 首先我查询我要更新的实体:
MyEntity managedEntity = entityManager.createQuery(query).getSingleResult();
然后我需要使用不受 JPA 管理的新“MyEntity”对象更新此实体:
MyEntity notManagedEntity = new MyEntity();
当然可以从 notManagedEntity 中读取每个字段并将它们设置为进行更新的 managedEntity。
但是有没有更优雅的方式来更新托管实体,而无需逐个获取和设置每个字段?
【问题讨论】:
-
Then I need to update this entity with a new "MyEntity" object which is not managed by JPA有什么理由吗? -
您是否尝试将
notManagedEntity上的id 字段设置为managedEntity的id,然后在notManagedEntity上调用update? -
@Yserbius 的意思是您不需要获取和设置每个字段。您只需要对主键或 id 字段执行此操作。这是无法避免的。
-
@XtremeBaumer 因为必须从 csv 创建和映射“notManagedEntity”,然后将其持久化到数据库中。但是,如果 notManagedEntity.equals(managedEntity) jpa 应该进行更新。 “equals”方法已经设置好,不依赖主键。
-
如果目的只是为了消除从
notManagedEntity到managedEntity的手动复制字段,您可以查看commons.apache.org/proper/commons-beanutils/apidocs/org/apache/…它负责自动填充字段。