Ich denke, diese Verbindung nützlich sein kann: http://mikedesjardins.net/2008/09/22/hibernate-criteria-subqueries-exists/
Es enthält das folgende Beispiel darüber, wie schaffen n Kriterien besteht:
„Was sind Sie wirklich versuchen zu tun ist, alle Pizzen Aufträge zu erhalten, in dem . eine zugehörige kleine Pizza gibt es in anderen Worten, die SQL-Abfrage, die Sie emulieren möchten, ist
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)
die Art und Weise, dass Sie das tun, ist durch die Verwendung eines „existiert“ Subquery, wie folgt aus:
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();
Und voila, das Ergebnis wird zwei PizzaOrders enthalten! "
Können Sie bitte Ihren Beitrag bearbeiten, um die relevanten Bits einzuschließen, damit die Antwort immer noch Wert hat, wenn die Verbindung ausfällt? – mabi