2

DogMetadataのセットを保持するオブジェクトDogがあります。

各 DogMetadata には、文字列 (" desc ") と int (" rank ")の 2 つの値があります。

犬の説明には、「小さい」が 5、「毛むくじゃら」が 2、「フレンドリー」が 9、「ダルメーション」が 11、「雑種」が 22 のように、さまざまなランクがあります。

任意の desc 値に基づいて犬を検索する必要があります (たとえば、「毛むくじゃら」または「小さい」犬を検索します)。

このクエリは、一致する犬を返しますが、それらは順不同です。

select distinct Dog as d
left join d.dogMetadata as dMeta
where ( (dMeta.desc = 'furry') OR (dMeta.desc = 'small') )

一致する DogMetadatas の合計「ランク」値で、一致する Dog オブジェクトのリストを並べ替えるにはどうすればよいですか?

私は一日中犬のようにこれに取り組んできました (「Group By」と「Order By」を試しています) が、間違ったツリーを吠えていると思います。

4

2 に答える 2

0

頭のてっぺんから(HQLで実際に確認せずに)

from Dog d where d.dogMetadata.desc in ('furry','small','whatever') order by d.dogMetadata.rank 
于 2009-02-05T23:34:39.847 に答える