我认为这个链接可以是有用的:
http://mikedesjardins.net/2008/09/22/hibernate-criteria-subqueries-exists/
它包含以下关于create n如何存在条件的示例:
“您真正想要做的是获得所有披萨订单,其中存在相关的小比萨饼,换句话说,您尝试仿效的SQL查询是
SELECT *
FROM PIZZA_ORDER
WHERE EXISTS (SELECT 1
FROM PIZZA
WHERE PIZZA.pizza_size_id = 1
AND PIZZA.pizza_order_id = PIZZA_ORDER.pizza_order_id)
你这样做的方式是使用“存在”子查询,如下所示:
Criteria criteria = Criteria.forClass(PizzaOrder.class,"pizzaOrder");
DetachedCriteria sizeCriteria = DetachedCriteria.forClass(Pizza.class,"pizza");
sizeCriteria.add("pizza_size_id",1);
sizeCriteria.add(Property.forName("pizza.pizza_order_id").eqProperty("pizzaOrder.pizza_order_id"));
criteria.add(Subqueries.exists(sizeCriteria.setProjection(Projections.property("pizza.id"))));
List ordersWithOneSmallPizza = criteria.list();
而瞧,结果会包含两个PizzaOrders!“