lov*_*ing 1 java sql orm hibernate jpa
我有两个实体:项目和投标,每个项目都有很多投标,因此投标是项目的集合属性。
在显示项目的页面中,我只想显示有关此“项目”的出价的前10条记录。
所以,我这样做查询:
from item
left join fetch item.bids
where item.id=3
...
Run Code Online (Sandbox Code Playgroud)
但这将获取有关某个项目的所有出价,因此,如何限制该项目的出价?
如果您还具有从出价到项目的关联,则效果会更好。
然后,您可以选择项目并应用限制限制:
session
.createQuery(
"select b
from bid b
join fetch b.item i
where
i.id=3")
.setMaxResult(10)
.list();
Run Code Online (Sandbox Code Playgroud)
您上一个查询,即选择项目和获取投标的查询将始终选择所有项目及其所有出价,并在内存中应用最大结果限制。这是因为Hibernate必须始终获取所有子项,而不能给您部分收集结果。
选择孩子并加入父母是更好的选择。该限制适用于所选的孩子,没有任何限制。