在JPA中,可以使用非pk字段合并实体来更新行

时间:2016-03-06 19:52:28

标签: java jpa

所以想象你有实体用户有字段id(PK),ssn(唯一),姓名,姓氏和生日

现在,从另一个来源我有除id之外的所有字段,

所以我想做一些像

这样的事情
User  newInformationUser = new User();
newInformationUser.setSsn(feed.getSsn());
newInformationUser.setName(feed.getName());
...
// make the following sentence to use ssn for updating the data
entityManager.merge(newInformationUser);

我很感激你的意见吗?不可能?

1 个答案:

答案 0 :(得分:0)

您不能将merge与新实体一起使用。合并是针对已存在的实体,用于更改现有实体的字段。如果您不了解id,那么您将使用其他字段来查找现有实体。

User user = em.find( .. somehow ... );
user.setSsn(...);
em.merge(user);

问问自己:EntityManager如何知道将新信息合并到哪个实体?