Java hibernate条件与exists子句
我找不到一个看似容易的问题的解决办法。假设有两个实体类:Java hibernate条件与exists子句,java,hibernate,criteria,Java,Hibernate,Criteria,我找不到一个看似容易的问题的解决办法。假设有两个实体类: class A { Set<B> bs; } class B { String text; } A类{ 设置bs; } B类{ 字符串文本; } 如何创建一个条件查询,该查询返回至少包含一个满足给定条件的B实体的所有a(如B.text='condition') 我认为这个链接很有用: 它包含以下有关如何创建n个条件的示例: “您真正想要做的是获取存在关联小比萨饼的所有比萨饼订单。换句话说,您试图模拟的SQL
class A {
Set<B> bs;
}
class B {
String text;
}
A类{
设置bs;
}
B类{
字符串文本;
}
如何创建一个条件查询,该查询返回至少包含一个满足给定条件的B实体的所有a(如B.text='condition') 我认为这个链接很有用: 它包含以下有关如何创建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)
方法是使用“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<pizzaOrder> ordersWithOneSmallPizza = criteria.list();
Criteria=Criteria.forClass(PizzaOrder.class,“PizzaOrder”);
DetachedCriteria=DetachedCriteria.forClass(Pizza.class,“Pizza”);
添加(“比萨大小id”,1);
添加(Property.forName(“pizza.pizza\u order\u id”).eqProperty(“pizzaOrder.pizza\u order\u id”);
add(subquerys.exists(sizeciteria.setProjection(Projections.property(“pizza.id”)));
List ordersWithOneSmallPizza=criteria.List();
瞧,结果将包含两个PizzaOrders!”你能编辑你的帖子以包含相关的位吗?这样当链接关闭时,答案仍然有价值?
Property.forName(“pizza.pizza\u order\u id”).eqProperty(“pizzaOrder.pizza\u order\u id”)
pizza\u order\u id是类属性名还是表列名?Hibernate 5.0.7我看不到方法sizeLiteria.add(String,int)