2013-07-07 30 views
0

我需要查詢數據庫中已經收到的結果對象的元素的不同組合。多個或條件與幾個單獨的JPQ /休眠查詢 - 在實體

例如,我得到一個Person實體的列表。對於Person Person中的每個人,我需要獲得地址列表(針對每個人)。

有兩種方法可以做到這一點:

  1. 迭代Person實體和火每個人實體查詢來獲取地址的那個人的名單。
  2. 使用Person實體中的元素動態構建查詢並啓動一個查詢來爲所有人拉出所有地址列表,然後再次迭代Person實體並匹配每個Person的Address列表。

我不知道我可能得到很多很多實體實體。那麼就績效和實踐而言,更好的方法是什麼?

所以,如果我有100個人單位,在第一種方法它的將是100個查詢VS巨大查詢第二做法像下面

from address where (person.id = 1 and person.zip = 393) 
        or (person.id = 2 and person.zip = 123) 
        or (person.id = 3 and person.zip = 345) 
        .... // 10 times. 

哪一個更好? Oracle中的任何限制或條件限制? 有沒有更好的方法?批量查詢?

回答

0

您可以使用hibernate進行急切加載,通過加載具有所需限制的人來直接獲得所需結果。否則,如果你想堅持延遲加載嘗試使用人和地址的內部聯接,這樣你就可以得到包含結果的數組列表

+0

可能我不清楚我的問題。我無法連接地址的人。我必須迭代人物以獲取每個人的地址。問題是一個單一的查詢或多個查詢 –