我有一个OrderItem(order_id, product_id)
,Product(product_id, ...)
和Order(order_id, ...)
表。如何使用“标准”按特定顺序获取所有产品?
Criteria orderItemCriteria = session.createCriteria(OrderItem.class);
Criteria orderCriteria = orderItemCriteria.createAlias("order", "o");
orderCriteria = orderCriteria.add(Restrictions.eq("o.id", orderId));
List<Product> orderProducts = orderItemCriteria.setProjection(Projections.property("product")).list();
这将获取所有product_ids
。如何获得所有产品详细信息?
注意* ,当我尝试访问产品的除ID以外的其他任何属性时,都会得到lazyInitializtionException
,并且我不需要将Fetching更改为EAGER。
答案 0 :(得分:0)
在使用传统criteria
API的情况下,您可以使用.setFetchMode("product", FetchMode.EAGER)
方法:See the 4.2 documentation。
如果使用JPA标准API,则应使用.fetch( OrderItem_.product )
方法:See the 5.4 documentation