次のHQLクエリはうまく動作しますが、完全なFooDオブジェクトのリストを返します。より高速なクエリが必要なので、FooDオブジェクトのIDだけが必要です。 Hibernateのマッピングでは、FooDはFooBと多対1の関係を持っていません。Hibernate left join fetch - 最初のテーブルのIDリストだけを取得する
hqlQuery = "from FooD d left join fetch d.bill where d.ts < :ts"
私は、HQLクエリの同じ種類を使用した唯一のIDを取得しようとしている:
hqlQuery = "SELECT d.id from FooD d left join fetch d.bill where d.ts < :ts"
私はフェッチに参加し、指定が、フェッチされた協会の所有者が存在していなかった」クエリを得ました選択リストに表示されます。
は、私はその後だけFooD.IDを取得するために、通常のOracle SQLにクエリを変換した:
sqlQuery = "SELECT d.id from FooD d LEFT OUTER JOIN FooB b on d.foodId=b.id where d.ts < :ts"
私は、このような食品やfoob型のオブジェクトマッピングされています:
sqlQuery.addEntity(FooD.class);
sqlQuery.addEntity(FooB.class);
をしてから取得します電話番号:
hSession.createSQLQuery(sql).setTimestamp("ts", ts).list();
ただし、次のエラーが表示されます。"unexpected token: on near line 1".
Hibernateを使用してFooBで左外部結合を行うときにFooDのIDだけを取得する方法を知っていますか?
あなただけb.idを必要とし、where句としてd.tsを持っている場合は、なぜあなたは同じクエリでd.billを初期化する必要がありますか? –
私は紙幣を持っているd.idのみ必要です(d.billはFooB.idです)。 – cvsoftware