Tôi đoán điều này là dễ dàng, nhưng tôi không thể tìm ra.Làm cách nào để xây dựng một phép nối nghịch cho một mối quan hệ đơn hướng?
Nếu tôi có tổ chức Foo và Bar:
@Entity
class Foo{
@OneToMany
List<Bar> bars;
}
@Entity
class Bar{
@Column
int data;
}
và nếu tôi muốn tạo ra một tham (javax.persistence.criteria.Join<Foo, Bar>
) đối tượng, tôi có thể làm điều đó như thế này:
Root<Foo> root = ...;
Join<Foo,Bar> join = root.join(Foo_.bars);
Nhưng làm thế nào tôi có thể tạo một tham chiếu nghịch đảo
Join<Bar,Foo> inverseJoin = barRoot.join....()...?
vì tôi không có trường java trong lớp Bar trỏ đến nó là Foo paren t, nó là quan hệ một chiều?
Vâng, câu trả lời rõ ràng là: đó không phải là mối quan hệ một chiều nếu bạn cần sự tham gia nghịch đảo. Bạn đã kiểm tra bằng cách sử dụng một mối quan hệ hai chiều (thêm '@ ManyToOne' vào' Bar')? – mabi
Tôi đã xem xét điều đó, nhưng tôi muốn tránh điều đó nếu có thể. –
Có thể bạn cần phải sử dụng truy vấn SQL thô. Tôi không biết cách để làm những gì bạn muốn và IMHO không nên là một. – mabi