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