2

こんにちは、名前付きクエリがあります

@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();

Start パラメータと End パラメータを設定する必要があります。助けてください。

4

1 に答える 1

7

@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();
于 2012-07-25T13:17:55.013 に答える