SQL で書くと
select * from MY_TABLE
where (KEY1, KEY2) in (select KEY1, KEY2 from MY_TABLE where SEARCH_KEY = 'hoge')
みたいになるクエリを JPQL (EJB QL) で書こうとするも,
select t1 from myTable t1
where (t1.key1, t1.key2) in (select t2.key1, t2.key2 from myTable t2 where t2.searchKey = 'hoge')
とか書いたらエラーになってしまっつ。
どうやら IN 句で複数の列を対象にすることができないらしく,夕方くらいから悪戦苦闘。
今さらテーブル構成を変えたくないし。
ちなみに複数の列じゃないパターン,すなわち
select t1 from myTable t1
where t1.key in (select t2.key from myTable t2 where t2.searchKey = 'hoge')
みたいなのは,動きそうだった。
んで試行錯誤の末,最終的に確かこんな JPQL が完成:
select t1 from myTable t1, myTable t2
where t2.searchKey = 'hoge' and t1.key1 = t2.key1 and t1.key2 = t2.key2
そもそもサブクエリ (副問合せ) を使う必要がなかった,と。
わかってしまえばなんでもないようなことだったりする。
うろ覚えなので,ウソ書いてたらスマン。
ポンッ☆_o(´д゚〃)ナットク☆♪
ところで・・・
( ゚д゚)ノ ハイ!質問!
この店はどこぞにありますか?
お店は,先日の新人歓迎会の会場の真上ですよ。
ちょくちょく飲み食いしすぎてるのもこの店。