gpt4 book ai didi

java - 在 JPA 查询上设置 ORDER BY 和 LIMIT 子句

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

我对 Hibernate 和 JPA 非常非常陌生。我希望能够将 ORDER BY 和 LIMIT 子句应用于 Hibernate(?) 查询,但结果是空的。 注意:我继承了这段代码。

这是当前代码:

public SomeCoolResponse getSomeCoolResponse(String myId) {
String queryString = "select aThing from AWholeBunchOfThings aThing " +
"join aThing.thisOtherThing oThing join oThing.StillAnotherThing saThing " +
"where saThing.subthing.id = :id";

Query q = getEntityManager().createQuery(queryString);
q.setParameter("id", myId);

List<MyThings> list = q.getResultList();

if(list.size() > 0) {
return list.get(0);
}
return null;
}

我希望能够应用 LIMIT 0,1 子句,而不是获取整个列表然后只返回第一个结果(这是我们唯一需要的结果)查询会更快。此外,查询需要按 aThing.created 降序排序,这是一个 UNIX 时间戳整数。

我试过像这样改变 queryString:

String queryString = "select aThing from AWholeBunchOfThings aThing " +
"join aThing.thisOtherThing oThing join oThing.StillAnotherThing saThing " +
"where saThing.subthing.id = :id ORDER BY aThing.created LIMIT 0,1";

但是 Hibernate 仍然返回整个集合。

我看过使用 JPA CriteriaBuilder API,但它伤了我的脑袋。

在这方面我完全是个菜鸟,非常感谢任何帮助!

最佳答案

我觉得你需要

q.setMaxResults(1);

另请参阅此处接受的答案。

How do you do a limit query in HQL?

关于“order by”子句,您可以将其包含在 queryString 中。

关于java - 在 JPA 查询上设置 ORDER BY 和 LIMIT 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20849389/

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