我正在尝试使用 Hibernate 从表中检索大约 1 亿行。我有一个包含费用集合的持久实体项目(另一个持久实体)。鉴于我将遍历结果并访问每个对象的费用,我想急切地获取费用以避免 n+1 问题。
我还应该提到我想将它加入另一个名为 Provider 的表(一对一映射但没有外键)。我试过:
String query = "select new " + Order.class.getName()
+ "(i, p) from Item i left join fetch i.fees f, Provider p where "
+ "p.factoryId=i.factoryId and p.factoryRef=i.factoryRef";
return session.createQuery(query).scroll();
我的 Order 类包含一个 Provider 字段和一个 Item 字段。我收到此错误:
引起:org.hibernate.QueryException:查询指定连接提取,但提取关联的所有者不存在于选择列表中
我想最终得到一个可滚动的订单列表,其中包含项目(急切收取的费用)和提供者。