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
?
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