【发布时间】:2014-01-17 22:04:52
【问题描述】:
我对 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 降序排序,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,但它伤了我的脑筋。
在这方面我是个十足的人,非常感谢任何帮助!
【问题讨论】:
-
JPQL 不是 SQL;不支持
limit等数据库细节。
标签: java mysql sql hibernate jpa