Tôi đã dành vài giờ tìm kiếm xung quanh và không tìm thấy bất kỳ điều gì tương tự như trường hợp của tôi.JPA @JoinTable với điều kiện tham gia thêm
Giả sử sau nhiều-nhiều mô hình dữ liệu:
Contract (any business entity) - contract_id - other fields Party (another business entity) - party_id - other fields Contract_Party (relations between first two with additional role indicator, e.g. owner, signer, seller, etc) - contract_id - party_id - role
Bây giờ chúng ta hãy giả sử tôi muốn để lập bản đồ tất cả hợp đồng liên quan đến dự tiệc (uni-directional). Bạn có thể thực hiện việc này bằng cách sử dụng chú thích sau trong Party
lớp thực thể:
@OneToMany
@JoinTable(
name="Contract_Party",
joinColumns = {@JoinColumn(name="party_id", referencedColumnName="party_id")},
inverseJoinColumns = {@JoinColumn(name="contract_id", referencedColumnName="contract_id")}
}
private List<Contract> contracts;
Điều đó là tốt.
Nhưng điều tôi đang tìm kiếm là cách ánh xạ hợp đồng với vai trò cụ thể?
@OneToMany
@??? ("ROLE = 'SIGNER' ")
private List<Contract> signedContracts;
Về mặt kỹ thuật tôi đang tìm kiếm một cách để bổ sung thêm điều kiện vào THAM GIA tuyên bố.
Cho đến nay tìm thấy những ý tưởng trong các chủ đề tương tự sau đây:
- đồ tham gia bảng như một thực thể riêng biệt, và thực hiện lọc bởi vai trò sử dụng các truy vấn tùy chỉnh;
- Hibernate có chú thích @JoinFormula, nhưng không có cách nào để áp dụng chú thích trong @JoinTable;
- Hibernate cũng có chú thích @Where, nhưng nó thêm điều kiện cho bảng Hợp đồng không cho bảng kết nối;
- sử dụng @MapKeyColumn và trả về Bản đồ thay vì Danh sách, nhưng tôi có thể có nhiều hợp đồng cho một vai trò;
- tạo chế độ xem trên mặt DB (cái này hoạt động thực sự :)
Cảm ơn!
Cảm ơn rất nhiều, hoạt động như một nét duyên dáng! – Vitaljok
Cảm ơn các ý tưởng. Tôi cũng có câu hỏi này, nhưng từ quan điểm của điều này: Làm cách nào để gọi tất cả các Bên, để có danh sách các hợp đồng tương ứng với vai trò = 'người ký'? Tôi có thể sử dụng truy vấn để thực hiện việc này không? Truy vấn JPA là gì? –
liên quan: '@ JoinFormula' – Blauhirn