Java 如何在Hibernate中为子查询的结果行提供别名?

Java 如何在Hibernate中为子查询的结果行提供别名?,java,hibernate,postgresql,Java,Hibernate,Postgresql,示例类: 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

示例类:

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中如何执行此操作

我问这个问题的原因是因为Hibernate似乎抛出了一个未知的实体:当customer属性为null时出现null错误

这就是我试图对标准所做的:

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");

能否在此上下文中添加createAlias的解释?我想为子查询的完整结果集提供一个别名,以便在主查询中使用