java - 如何在 Hibernate 中为子查询的结果行指定别名?

标签 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 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/

相关文章:

java - 从覆盖的 Tomcat 类访问应用程序代码

java - 在jpa实体中使用json字段(实现hibernate UserType)

java - 常量池中两个String的引用id

java - 如何使绘图默认移动,独立于 MouseEvent?

java - 我们可以在 hibernate 条件查询中包含条件吗?

php - Yii2 Form View 组件其他数据库

postgresql - 用花括号括起包含特殊字符的密码不起作用

database - PostgreSQL 的连接被拒绝,无法从事件状态(已退出)重新启动

大数据的java bpm和子工作流的多实例化

java - 验证二叉树中的所有数据条目是否相等