2009-05-15 41 views
13

Tôi đang sử dụng Hibernate 3.2 và sử dụng tiêu chí để tạo truy vấn. Tôi muốn thêm và "sắp xếp theo" cho một liên kết nhiều người, nhưng tôi không thấy cách thực hiện điều đó. Truy vấn Hibernate sẽ kết thúc như thế này, tôi đoán:thứ tự ngủ đông theo liên kết

select t1.a, t1.b, t1.c, t2.dd, t2.ee 
from t1 
inner join t2 on t1.a = t2.aa 
order by t2.dd <-- need to add this 

Tôi đã thử criteria.addOrder ("assnName.propertyName") nhưng nó không hoạt động. Tôi biết nó có thể được thực hiện cho các thuộc tính bình thường. Tui bỏ lỡ điều gì vậy?

Trả lời

23

Ok, tìm thấy câu trả lời. Tôi đã thử một cái gì đó mà tôi không nghĩ rằng sẽ làm việc, nhưng tôi ngạc nhiên đã làm. Tôi đã cố gắng này:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class); 

criteria.addOrder(Order.asc("assnName.propertyName")) 

nhưng những gì thực sự làm việc là:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class); 
Criteria assnCrit = criteria.createCriteria("assnName"); 

assnCrit.addOrder(Order.asc("propertyName")); 

tôi đã đưa ra giả định rằng phương pháp addOrder() là chỉ có thể sử dụng trên các tiêu chí chính và không phải trên bất kỳ tiêu chí hiệp hội.

14

Tôi đã có cùng một vấn đề và nó cũng có thể được giải quyết như thế này:

Criteria criteria = super.getSession().createCriteria(WipDiscreteJob.class) 
    .createAlias("assnName","a") 
    .addOrder(Order.asc("a.propertyName")); 

createAlias ​​cho phép bạn giữ tiêu chí của bạn bắt nguồn từ trên thực thể ban đầu của bạn (WipDiscreteJob.class trong trường hợp này) để bạn có thể giữ xây dựng tiêu chuẩn của bạn trong trường hợp bạn cần nó (ví dụ, nếu bạn cần một đơn đặt hàng thứ hai bởi tài sản từ bạn thực thể ban đầu).

+1

Bạn đang tìm kiếm tất cả vì điều này, cảm ơn! Bạn thậm chí có thể làm '.createAlias ​​(" assnName "," assnName ")' cho phép bạn giữ nguyên cú pháp giống như HQL. –

+0

@Abdullah Vui mừng được giúp đỡ. – Marcelo

+1

Điều này rất hữu ích. Phải mất một lúc để tìm thấy điều này. – smp7d

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