Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在JPA查询中设置ORDERBY和LIMIT子句_Java_Mysql_Sql_Hibernate_Jpa - Fatal编程技术网

Java 在JPA查询中设置ORDERBY和LIMIT子句

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

我对Hibernate和JPA非常、非常陌生。我希望能够将ORDERBY和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;
}
但是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);