是否有基于非Id字段合并的JPA功能?

Out*_*ast 5 java hibernate jpa

我正在构建的服务从外部系统接收数据,该数据来自供应商的"外部ID".当我将这些数据保存在我们的数据库中时,我也为其分配了一个自动生成的ID:

@Entity
public class Content {

  @Id
  @GeneratedValue
  private Long id;

  private Long externalId;

 // many other fields
}
Run Code Online (Sandbox Code Playgroud)

当外部系统重新发送相同内容的数据(具有相同的外部ID)时,它将被反序列化为分离的内容POJO:

Content c = deserialize(json);
Run Code Online (Sandbox Code Playgroud)

是否有类似的东西EntityManager.merge可以使用externalId字段而不是id字段加载和更新数据库中的相应行?

Kla*_*aek 0

几乎,但是如果外部客户端不知道您的 id,您必须使用查询来获取实体(实际上您只需要实体的 id)。获得 id 后,您可以将其设置在分离的实体上并进行合并。

希望这可以帮助。