2017-01-24 19 views
5

Dịch vụ tôi đang xây dựng nhận dữ liệu từ một hệ thống bên ngoài đi kèm với "ID bên ngoài" của nhà cung cấp. Khi tôi lưu dữ liệu này trong cơ sở dữ liệu của chúng tôi, tôi gán một ID tự động tạo ra để nó quá:Có tính năng JPA để hợp nhất dựa trên các trường không phải là Id không?

@Entity 
public class Content { 

    @Id 
    @GeneratedValue 
    private Long id; 

    private Long externalId; 

// many other fields 
} 

Khi hệ thống bên ngoài sẽ gửi lại dữ liệu cho cùng một nội dung (với cùng một ID bên ngoài), nó được deserialized vào một POJO Content tách ra:

Content c = deserialize(json); 

có cái gì đó như EntityManager.merge có thể tải và cập nhật hàng tương ứng từ cơ sở dữ liệu bằng cách sử dụng lĩnh vực externalId, chứ không phải là lĩnh vực id?

+0

Tôi không nghĩ là có. Bạn sẽ phải tra cứu thực thể của mình thông qua một createQuery; có thể áp đặt tạo chỉ mục trên externalId. Tuy nhiên câu hỏi thú vị IMO – Eugene

Trả lời

0

Hầu hết, nhưng nếu khách hàng bên ngoài không biết id của bạn, bạn phải sử dụng truy vấn để nhận thực thể (bạn thực sự chỉ cần id của tổ chức). Một khi bạn có id, bạn có thể thiết lập nó trên thực thể tách rời và thực hiện hợp nhất.

Hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan