示例类:
public Class Order{
private Integer id;
private Customer customer;
}
public Class Customer{
private Integer id;
private String name;
}
我想在 PostgreSQL 语法中执行的示例查询:
SELECT order_alias.id
FROM (select * from order where customer is not null) order_alias
WHERE order_alias.customer < 10;
我如何在 Hibernate 中执行此操作?
我问这个问题的原因是,当客户属性为 null 时,Hibernate 似乎会抛出“未知实体:null”错误。
这就是我试图用 Criteria 做的:
DetachedCriteria dc = DetachedCriteria.forClass(Order.class, "o");
dc.add(Restrictions.lt("o.customer.id", 10);
dc.setProjection(Projections.property("o.id");
Criteria query = Session.createCriteria(OtherClass.class, "oc");
query.add(Subqueries.propertyIn("oc.id", dc);
List<OtherClass> listOC = query.list();
我收到一个错误,似乎来自第 2 行。
最佳答案
您可以定义别名并使用它。像这样
DetachedCriteria dc = DetachedCriteria.forClass(Order.class, "o");
dc.createAlias("customer", "customer");
dc.add(Restrictions.lt("customer.id", 10);
dc.setProjection(Projections.property("o.id");
关于java - 如何在 Hibernate 中为子查询的结果行指定别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32594543/