2010-03-03 43 views
6

Tablo tablomuzda sütun, id, isim, kazanç, games_played var. Onu bir oyuncuya eşleştirdim. I (HQL da yardımcı olacaktır Kriterleri ile mümkün değilse, tercihen Kriterleri ile)Sonuçları Hazırda bekletme değerine göre ayarlama Hazırda bekletme

select * Oyuncu siparişinden tarafından (kazanç/ games_played)

I hazırda aşağıdaki sorguyu yapmak istiyorum Kazanma oranlarına göre sıralı Liste <Oyuncu> almak için bekliyoruz. cevap hazırda Dokümanlar

Palo

cevap

9

Hazırda bekleme, aritmetik ifadeleri yan tümce tümcesinde desteklemez. maddesi ile

grup ne de aritmetik ifadeler içerebilir maddesi ile sipariş: Hazırda belgelerin bölümünü 14.12. The group by clause aktaran.

Gerçekten de düzgün döndürmez aşağıdaki hql sorgu sipariş sonuçları:

select p from Player p order by (p.wins/p.gamesPlayed) 

Ve seni o kadar Ölçüt API bu çözmez org.hibernate.criterion.Property bölebilirsiniz sanmıyorum.

yüzden ek açıklamalarla örneğin (bir formülle) hesaplanmış özellik kullanmak için öneririm:

session.createCriteria(Player.class).addOrder(Order.desc("ratio")) 
+1

Bu ayrıca, .NET'te Formula() yöntemini kullanarak akıcı eşleme ile çalışır. – andypaxo

2

için

teşekkür ederiz - onlar temel veritabanı tarafından destekleniyorsa

SQL işlevleri ve toplama işlevleri maddelerine göre olan ve sırayla izin verilir . demektir

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql-ordering

Eğer temel veritabanı dayalı yapmaya gerek.

+1

Teşekkür:

private float wins; private float gamesPlayed; @Formula(value = "WINS/GAMESPLAYED") private float ratio; 

Bu Kriterler API ile aşağıdaki sorguyu sağlayacak cevap için sen Bunu Kriterler ile nasıl yapacağınız hakkında bir fikrin var mı? – Palo

+0

-1: Soru, * aritmetik ifadeler * (SQL işlevleri veya toplama işlevleri değil) ile ilgilidir. –

İlgili konular