次のようなNAMEテーブルがあるとします。
PERSON_ID PART_TYPE VALUE
およびPERSON_ID
はへの外部キー参照PERSON
です。
内部にPART_TYPE
は、、、、などFAMILY
の値があります。当然、値は実際の値になります。GIVEN
PREFIX
SUFFIX
SQLクエリ(Hibernateは言うまでもなく)をどのように記述して、これを、、PART_TYPE
次にVALUE
for FAMILY
PART_TYPE
、次にVALUE
for ?の順に並べGIVEN
PART_TYPE
ますか?
次の3人がいるシナリオを考えてみましょう。
Given3 Family10
Given5 Family10
Given7 Family10
このSQLの場合:
SELECT this_.person_id, name1_.part_type, name1_.value
FROM person this_
LEFT OUTER JOIN name name1_
ON this_.person_id =name1_.person_id
ORDER BY (
CASE
WHEN name1_.PART_TYPE = 'FAMILY'
THEN 0
WHEN name1_.PART_TYPE = 'GIVEN'
THEN 1
END),
name1_.VALUE,
私は得る:
ID2 FAM Family10
ID1 FAM Family10
ID3 FAM Family10
ID4 GIV Given3
ID5 GIV Given5
ID6 GIV Given7
が欲しいです:
ID1 FAM Family10
ID2 FAM Family10
ID3 FAM Family10
ID4 GIV Given3
ID5 GIV Given5
ID6 GIV Given7
したがって、現在の状態のこれらのFamily10行の順序は不確定です。これは、ID1、ID2、およびID3の任意の組み合わせである可能性があります。与えられた値に従って並べてほしい。複数のselectステートメントを使用しても、これを行う方法が本当にわかりません。
これを実行したい理由は、これらの個人IDを取得したいので、自分の側でフィルタリングを実行して、個別の個人IDを取得し、それにページングロジックを実行してから、実際に個人をロードすることができるためです(これにより、多くの削減が可能になります) SQL呼び出しの)。現時点ではデータベーススキーマを変更できません。