如何为命名查询设置参数

时间:2012-07-25 13:03:52

标签: hibernate jpa

您好我有一个命名查询

@NamedQuery(name = "StudyplanCategory.findByStatusAndLimit",
            query = "SELECT s FROM StudyplanCategory s WHERE 
            s.status =:status LIMIT s.start=:start,s.end=end")

我想设置这样的限制:

@NamedQuery(name = "StudyplanCategory.findByStatusAndLimit", 
            query = "SELECT s FROM StudyplanCategory s WHERE 
            s.status =:status LIMIT s.start=:start,s.end=end")

但这在服务器启动时显示错误。 我使用以下代码在DAO类中调用查询:

Query query = entityManager.createNamedQuery("StudyplanCategory.findByStatusAndLimit");
int end=(start*pageNumber);
query.setParameter("status", status);
query.setParameter("start", start);
query.setParameter("end", end);
return (List<StudyplanCategory>) query.getResultList();

需要设置开始和结束参数。请帮助。

1 个答案:

答案 0 :(得分:5)

正如@DataNucleus所说,LIMIT不是JPQL中的有效关键字。这不是指定返回多少行的方法。你就是这样做的:

@NamedQuery(name = "StudyplanCategory.findByStatusAndLimit", 
        query = "SELECT s FROM StudyplanCategory s WHERE 
                    s.status =:status")

这将是调用命名查询的代码:

Query query = entityManager.createNamedQuery("StudyplanCategory.findByStatusAndLimit");
int end=(start*pageNumber);
query.setParameter("status", status);
query.setFirstResult(start);
query.setMaxResults(end - start);
return (List<StudyplanCategory>) query.getResultList();