我有以下HQL查詢,它工作正常,但它返回完整FooD對象的列表。我只需要FooD對象的ID,因爲我需要更快的查詢。請不要在Hibernate映射中,FooD與FooB有多對一的關係。休眠左連接抓取 - 只獲取第一個表的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"
我指定連接抓取「查詢,但所獲取的關聯的所有者不存在在選擇列表中「。
我已經然後轉換查詢,以常規的Oracle SQL只拿到FooD.ID:
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,並有d.ts爲where子句,爲什麼你需要在同一個查詢中初始化d.bill? –
因爲我只需要d.id有賬單(d.bill是FooB.id)。 – cvsoftware