valores sentencias sentencia listas lista ejemplo consulta java hibernate criteria

java - sentencias - criterios de hibernación con cláusula exists



sql server sentencia in (1)

Creo que este enlace puede ser útil: http://mikedesjardins.net/2008/09/22/hibernate-criteria-subqueries-exists/

Contiene el siguiente ejemplo sobre cómo crea criterios n existe:

"Lo que realmente intenta hacer es obtener todos los pedidos de pizza donde exista una pizza pequeña asociada. En otras palabras, la consulta SQL que está tratando de emular es

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)

La forma en que lo haces es usando una subconsulta "existente", como esta:

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<pizzaOrder> ordersWithOneSmallPizza = criteria.list();

¡Y listo, el resultado contendrá dos PizzaOrders! "

No puedo encontrar una solución a un problema que parece ser fácil. Diga que hay 2 clases de entidades:

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

¿Cómo crear una consulta de criterios que devuelve todas las A que contienen al menos una entidad B que cumple una condición dada (como b.text = ''condición'')?