带有exists子句的hibernate条件

我找不到一个容易解决的问题的解决方案。 假设有2个实体类:

class A { Set bs; } class B { String text; } 

如何创建一个条件查询,返回包含至少一个满足给定条件的B实体的所有A(如b.text =’condition’)?

我认为这个链接很有用: http : //mikedesjardins.net/2008/09/22/hibernate-criteria-subqueries-exists/

它包含以下关于create n exists条件的示例:

“你真正要做的就是获得所有相关小比萨存在的比萨订单。换句话说,你试图模仿的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) 

你这样做的方法是使用“exists”子查询,如下所示:

 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!“