如何使用休眠方式联接两个表?

时间:2019-03-29 15:21:43

标签: hibernate

我有一个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。

1 个答案:

答案 0 :(得分:0)

在使用传统criteria API的情况下,您可以使用.setFetchMode("product", FetchMode.EAGER)方法:See the 4.2 documentation

如果使用JPA标准API,则应使用.fetch( OrderItem_.product )方法:See the 5.4 documentation