2012-01-10 30 views
5

mẫu mã của tôi:
Trong JPA, tôi có thể truy cập trường được tạo bởi @OrderColumn vào thực thể được thu thập không?

 
public class A { 

    @OneToMany 
    @OrderColumn(name = "ORDER") 
    private List<B> bList; 
    ... 
} 

public class B { 

    @Column(name = "ORDER") 
    private Integer order; // I need this field because I want 
         // to use the ordering field in my query. 
    ... 
} 

Với mã này EclipseLink cố gắng tạo ra các "ORDER" cột 2 lần ném một ngoại lệ và không tạo ra bảng B.

Cảm ơn.

+0

lý do tại sao không xác định * cách bạn muốn sử dụng thứ tự trong truy vấn – DataNucleus

+0

Đơn giản như sau: SELECT b FROM B b WHERE ... ORDER BY order – devmao

+0

Vì vậy, hãy làm như James đã nói ... "ORDER BY INDEX (danh sách)" – DataNucleus

Trả lời

2

Vui lòng đăng nhập lỗi cho vấn đề này trên EclipseLink.

Bạn không cần cột chỉ để truy vấn, bạn có thể sử dụng JPQL INDEX (bList) để truy vấn cột thứ tự.

Trong EclipseLink bạn cũng có thể sử dụng bộ mô tả DescriptorCustomizer để xác định QueryKey cho bất kỳ cột nào để cho phép truy vấn trên đó.

+0

ok nhưng không thể sử dụng nó trong phần truy vấn "theo yêu cầu" – devmao

1

Sử dụng @OrderBy thay vì @OrderColumn. Hãy xem tài liệu tham khảo http://docs.oracle.com/javaee/6/api/javax/persistence/OrderColumn.html

+0

Tại sao anh ta làm điều đó nếu anh ta muốn danh sách được lập chỉ mục, thay vì một danh sách theo thứ tự? Chúng là các khái niệm khác nhau, với một khái niệm duy trì thứ tự các phần tử đã được thêm vào danh sách và thứ tự khác áp đặt một số thứ tự dựa trên truy vấn trên chúng – DataNucleus

Các vấn đề liên quan