Tôi có mối quan hệ cha/con giữa hai bảng và ánh xạ tương ứng trong các lớp Java của tôi. Các bảng xấp xỉ trông như thế:chú thích để lọc kết quả của một liên kết @OneToMany
A (ref number, stuff varchar2(4000))
B (a_ref number, other number, foo varchar2(200))
và mã Java:
@Entity
class A {
@Id
@Column(name = "REF")
private int ref;
@OneToMany
@JoinColumn(name = "A_REF", referencedName = "REF")
private Set<B> bs;
}
@Entity
class B {
@Id
@Column(name = "A_REF")
private int aRef;
@Id
@Column(name = "OTHER")
private int other;
}
này hoạt động tốt, nhưng tôi muốn thêm một bộ lọc trên các hàng mà tôi lấy từ bảng con. Truy vấn được tạo ra trông giống như:
select a_ref, other, foo from B where a_ref = ?
Và tôi muốn nó là:
select a_ref, other, foo from B where a_ref = ? and other = 123
các bộ lọc bổ sung sẽ chỉ là một tên cột và một giá trị mã hóa cứng. Có cách nào để làm điều đó bằng cách sử dụng chú thích ngủ đông không?
Tôi đã xem @JoinFormula
, nhưng với điều đó, tôi luôn phải tham chiếu tên cột từ bảng cha (trong thuộc tính name
của JoinFormula).
Cảm ơn trước vì lời khuyên nào.
Tò mò, tại sao không chỉ chuyển nó thành tham số? 'where a_ref =? và khác =? '. Giá trị được truyền vào có thể được hardcoded nếu đó là những gì bạn cần làm (tôi sẽ đề nghị sử dụng một hệ thống thuộc tính cấu hình mặc dù). – ADTC