Java 在JPA查询中设置ORDERBY和LIMIT子句
我对Hibernate和JPA非常、非常陌生。我希望能够将ORDERBY和LIMIT子句应用于Hibernate(?)查询,但结果是空的注意:我继承了这段代码。 以下是当前代码:Java 在JPA查询中设置ORDERBY和LIMIT子句,java,mysql,sql,hibernate,jpa,Java,Mysql,Sql,Hibernate,Jpa,我对Hibernate和JPA非常、非常陌生。我希望能够将ORDERBY和LIMIT子句应用于Hibernate(?)查询,但结果是空的注意:我继承了这段代码。 以下是当前代码: public SomeCoolResponse getSomeCoolResponse(String myId) { String queryString = "select aThing from AWholeBunchOfThings aThing " + "join aThing.thisOthe
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;
}
但是Hibernate仍然返回整个集合
我看过使用JPA CriteriaBuilder API,但它伤了我的大脑
我是一个完全n00b当谈到这一点,任何帮助是非常感谢 我想你需要
q.setMaxResults(1);
请参见此处的公认答案
至于“order by”子句,您可以将其包括在
查询字符串中相当于限制开始的JPQL中,最大值为:
setFirstResult
和setMaxResults
:
q.setFirstResult(start);
q.setMaxResults(limit);
那么我应该能够使用q.getSingleResult()
?@daniel0mullins你是说uniqueResult()?只需调用setMaxResults,您的查询将最多返回一条记录。如果您查看生成的SQL,我认为它将包含LIMIT子句,因此它正是您所需要的。@daniel0mullins好的,我以为我们在谈论org.hibernate.Query.like我说过的-totaln00b@daniel0mullins那你看这里。JPQL不是SQL;不支持limit
等数据库详细信息。
q.setFirstResult(start);
q.setMaxResults(limit);