3

たとえば、A と B の間には多対多の関連付けがあります。

 A.bsは、中央テーブルのインデックス列で並べ替えられた List<B> です: idx
そのため、idx 列を Class フィールドとしてマッピングしていません。

ここで、B のリストを個別にクエリしたいと思います。主な条件は A の ID です。しかし、B を直接クエリすると、並べ替えられていないリストが表示されます (idx フィールドで並べ替えないでください)。

最初に A を取得し、次に B をリストに収集できることはわかっています。ただし、フレームワークを考えると、手作業でコーディングせずに List を返す必要があります (フレームワークについてはあまり説明したくありません。一言で言えば、この制限は、自分でカプセル化するページネーション ツールによって引き起こされます)。 、私はそれを変更したくありません。)

HQL/基準を介してこの問題を解決する方法はありますか? 基準が好ましい。

4

1 に答える 1

1

わかった。この問題は解決されました。hql で index() 関数を使用すると、正しい結果が得られます。そのような:

A から b を選択 a 左結合 a.bs b where a.id = ? インデックス順(b)

index() の制限は、子が hql で親によってナビゲートされなければならない、または例外がスローされることです。は、「select b from B b order by index(b)」のような hql が不正であることを意味します。さらに、この関連付けナビゲーションでは「フェッチ」を使用しないでください (この質問には関係ありません)。

これに戸惑っている誰かに役立つことを願っています。

于 2012-10-31T11:16:43.083 に答える