dan*_*ins 2 java mysql sql hibernate jpa
我对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;
}
Run Code Online (Sandbox Code Playgroud)
而不是获取整个列表然后只返回第一个结果(这是我们唯一需要的结果),我希望能够应用一个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";
Run Code Online (Sandbox Code Playgroud)
但是Hibernate仍然会返回整个集合.
我已经看过使用JPA CriteriaBuilder API,但它伤害了我的大脑.
在这方面,我总共n00b,非常感谢任何帮助!
我想你需要
q.setMaxResults(1);
Run Code Online (Sandbox Code Playgroud)
另见这里接受的答案.
关于"order by"条款,您可以将其包含在queryString.
| 归档时间: |
|
| 查看次数: |
17742 次 |
| 最近记录: |