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