2014-07-01 105 views
3

我在Hibernate上使用Olingo 1.2。

我有一個返回250行的請求,每行都以一對多關係鏈接到另一個表。

我執行$ expand獲取子表中的所有數據,但是當我檢查在數據庫中執行的查詢時,看起來有251個獨立調用正在進行,一個用於主表返回250行,然後是一個爲每個行返回子記錄。

看着Olingo代碼,這種懶惰的方法是有意設計的。

我已經在Microsoft ODATA處理器上測試$ expand,並且在這種情況下它們使用貪婪方法。

我的問題是:如何切換Olingo使用貪婪方法進行$ expand(即將連接向下推入數據庫)?

回答

0

您看到生成的查詢是Hibernate的結果,而不是Olingo。這是Hibernate用來爲子表生成查詢的默認方式。您需要查看Hibernate中的@Fetch(FetchMode.Join)註釋並將其應用於您的關係。請看這個鏈接的解釋:

https://stackoverflow.com/a/11077041/3873392