我的模型@OneToMany(mappedBy="customer",cascade=CascadeType.ALL, fetch=FetchType.LAZY)
@BatchSize(size=25)
private Set<Contact> contacts = new HashSet<Contact>();
包含与Booking
模型相关联的space_id
个属Space
。
现在我有多个空格,并希望根据每个ID计算每个预订。
我希望获得最佳方法来从数据库中删除记录,而不会反复查询。 目前,我这样做:
belongs_to :space
但是这会一次又一次地触发查询形成db。有没有最好的办法呢?
答案 0 :(得分:1)
这称为“N + 1查询”问题。在Rails中,您可以使用预先加载来解决它。您可以使用includes
通过将代码的第一行更改为
spaces = Space.eager_load(:bookings)
以下是对Rails link中热切加载的方式(includes
,eager_load
和preload
)的良好解释和比较。