2017-01-24 77 views
5

我正在构建的服务从外部系统接收数据,该数据随供应商的“外部ID”一起提供。当我保存在我们的数据库中这个数据,我给你一个自动生成的ID给它太:是否有基于非Id字段进行合并的JPA功能?

@Entity 
public class Content { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private Long externalId; 

// many other fields 
} 

当外部系统重新发送相同内容的数据(使用相同的外部ID),它被反序列化为一个分离的内容POJO:

Content c = deserialize(json); 

有什么样EntityManager.merge可以加载并使用externalId领域,而不是id字段更新从数据库中相应的行?

+0

我不觉得有什么。你将不得不通过createQuery来查找你的实体;这可能会在externalId上创建索引。不过有趣的问题IMO – Eugene

回答

0

差不多,但如果外部客户端不知道你的身份证,你必须使用一个查询来获取实体(你实际上只需要实体的ID)。一旦你有了id,你可以在分离的实体上设置它并进行合并。

希望这会有所帮助。