多个或条件与几个单独的JPQ / Hibernate查询 - 在实体上

时间:2013-07-07 01:55:50

标签: java sql hibernate jpa entity

我需要从已经收到的结果对象中查询数据库中不同的元素组合。

例如,我获得了Person个实体的列表。对于Person实体中的每个人,我需要获取地址列表(针对每个人)。

有两种方法可以做到:

  1. 迭代Person实体并为每个Person实体触发查询以获取该人的地址列表。
  2. 使用Person实体中的元素动态构建查询并触发一个单一查询以获取所有人员的所有地址列表,然后再次迭代Person实体并匹配每个Person的地址列表。
  3. 我不太了解我可能得到的很多人物实体。那么在性能和实践方面更好的方法是什么呢。

    所以,如果我有100个Person实体,在第一种方法中,它将是100次查询,而第二种方法,如下面的巨大查询

     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中的Or条件有任何限制/限制吗? 有更好的方法吗?批量查询?

1 个答案:

答案 0 :(得分:0)

您可以通过急切加载来使用休眠,通过加载具有所需限制的人来直接获得您想要的结果。或者如果你想坚持延迟加载尝试使用人和地址的内部联接,以便你可以得到一个包含结果的数组列表