Tôi có một lớp nói: "ClassA" trong đó có một bộ sưu tập các "ClassB"Hibernate @OrderBy với lớp tham chiếu
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "COLUMN_NAME")
private List<ClassB> lotsOfClasses;
"ClassB" có một lớp ánh xạ "ClassC" sử dụng đồng bằng chú thích bản đồ cũ:
public class ClassB {
...
@ManyToOne
@JoinColumn(name="AD_POINT_ID")
private ClassC classC;
...
}
làm thế nào để thêm một chú thích @OrderBy vào bộ sưu tập ClassA để ClassB, do đó bộ sưu tập được sắp xếp theo "tên" tài sản của ClassC
Giống như vậy:
@OrderBy(clause="classC.name asc")
Tất cả những gì tôi nhận được là ngoại lệ của Oracle nói rằng classC không xác định.
Bất kỳ trợ giúp nào ở đây đều tuyệt vời, vì nó thực sự làm tôi thất vọng vào lúc này.
P.S. Tôi cũng nên đề cập rằng sử dụng chú thích OrderBy trên bộ sưu tập như thế này: @OrderBy (khoản = "classC asc") (nghĩa là không có .name trên classC) Tôi nhận được một câu lệnh SQL hợp lệ, sử dụng cột ID (khóa chính) của classC để sắp xếp theo.
Chúc mừng, Đánh dấu
Theo đề nghị của Jiří Vypědřík bạn có thể thực hiện giao diện java.util.Comparator. Trong phương thức so sánh được triển khai, bạn có thể thực hiện logic để tham chiếu đến đối tượng Hibernate Mapped mà không có vấn đề, và trả về giá trị int tương ứng. Tuy nhiên, điều này sẽ không sử dụng thứ tự trên Oracle DB nhưng trong bộ nhớ (JVM) sắp xếp thay thế. – prageeth