gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 12:19:49 24 4
gpt4 key购买 nike

示例类:

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com