关于我之前的问题,我想确保加载所有子对象,因为我有多个线程可能需要访问数据(从而避免延迟加载异常)。我知道这样做的方法是在查询(EJB QL)中使用“fetch”关键字。像这样:
select distinct o from Order o left join fetch o.orderLines
假设一个模型有一个Order
类,其中有一组OrderLines
。
我的问题是似乎需要“distinct”关键字,否则我似乎会得到一个Order
for each OrderLine
。我在做正确的事吗?
也许更重要的是,有没有办法拉入所有子对象,无论多深?我们有大约 10-15 个类,对于服务器,我们需要加载所有内容......我避免使用FetchType.EAGER
,因为这意味着它总是渴望,特别是 Web 前端加载所有内容 - 但也许这是要走的路 - 是你做什么?我似乎记得我们之前尝试过这个然后得到非常慢的网页 - 但这也许意味着我们应该使用二级缓存?