我们说我有用户,每个用户都有订单列表:
跳过了Setter,getter,id
@Entity
class Order {
private int price;
}
@Entity
class User {
@OneToMany
@JoinColumn(..)
private Set<Order> orders;
}
使用java标准API我想创建查询以加载所有具有价格&gt;的订单的用户100并以此价格获取订单。
如果我创建像
这样的查询criteriaBuilder.greaterThan(root.join("orders").get("price"), 100);
我会使用所有订单获得正确的用户。我可以只获取所需的订单吗?
答案 0 :(得分:0)
您可以使用分离式查询条件方法:
DetachedCriteria maxQuery = DetachedCriteria.forClass(Order.class);
maxQuery.add(Restrictions.gt("price", 100));
并将maxQuery添加到原始User.class查询中,如下所示:
userQuery.add(Property.forName("orders").eq(maxQuery));