私はクエリを書く必要があります。ここに簡略化された問題があります。 名前付きバスケットがあります。それらに果物がある(0以上)。バスケットにはオーナーがいます(1つ以上)。フルーツにはオーナーもいます(1人以上)。私は、ジョーのバスケットの中にジョーの果物のリストを取得したい。ジョーのバスケットにはジョーの果物がない。ここで我々は行く:HQL - 2条件での外部結合
select basket.name, fruit.name from Owner owner
join owner.baskets basket
left outer join basket.fruits fruit WITH OWNER in (FRUIT.OWNERS)
where owner.id = joe_id
しかし...それはHQLでは動作しません。それは素敵にしか見えません。 SQLでは単純です。
だから、質問は次のとおりです。 はどのように私はHQLまたは基準API(Hibernateは3.3を使用して) にもっとして1つの条件で参加できます。
私は空のバスケットを後で取り出すことができないので、どのアイテムがどのページにあるべきかを計算することができないため、ページングが必要です。私の現在の解決策はネイティブクエリですが、方法が必要です。
休止状態からの実際のエラーメッセージがここで最も参考になる... – digitaljoel
私はどこにも例のスタックトレースを見つけることができませんが、それはWITH句クエリASTの二つの異なる枝の条件を兼ね備えているため、このクエリが正しくないことを言いました木、または何かこの行に沿って。とにかく、WITH句は両方の条件が同じオブジェクトに関連する場合に機能します: 'kitten * as kitten * with kitten * .bodyWeight> 10.0'(hibernateドキュメントの例)。実際には、WITHを使用する必要があるときはいつでも動作しませんでした;) – mabn