0

人!

コード JPA/HQL を書いて実行しましたが、エラーメッセージが表示されます。いう:

java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: Exception Description: Syntax error parsing the query [Select t.disciplina.nomeDisciplina, n.notaFinal From (Select f.notas as notas, sum(f.f1 + f.f2 + f.f3 +f.f4) as soma from Frequencia f group by f.notas) subquery inner join subquery.notas n inner join n.aluno1 a inner join n.turma1 t inner join a.usuario u where u = ?1], line 1, column 54: unexpected token [(].Internal Exception: org.eclipse.persistence.internal.jpa.parsing.jpql.InvalidIdentifierException 

句のサブクエリを使用して HQL(クエリ) を作成します。以下を参照してください。

 public List<Object[]> getListNotasFrequencia(Usuario u) {
        EntityManager em = getEntityManager();

        List<Object[]> lista = new Vector<Object[]>();

        String query = "Select t.disciplina.nomeDisciplina, n.notaFinal "
               + " From (Select f.notas as notas, sum(f.f1 + f.f2 + f.f3 +f.f4) as soma from Frequencia f group by f.notas) subquery  "
                + " inner join subquery.notas n"
                + " inner join n.aluno1 a"
                + " inner join n.turma1 t"
                + " inner join a.usuario u"
                + " where u = ?1"; 

        try {
            lista = em.createQuery(query).setParameter(1, u).getResultList();
        } finally {
            em.close();
        }
        return lista;
    }

私はすでにこのコードに何度もバグを報告していますが、同じエラー メッセージが表示されます。

お願いします!あなたはこのコードについて助けたりヒントを与えたりします。私はこのJPA/JPQLを学び始めています。

ありがとうございました!!!

4

1 に答える 1

0

問題は FROM 句の副選択です。これは JPA ではサポートされていません。EclipseLink はこれをある程度サポートしていますが、この存在しないオブジェクトから引き続き関係を別名化するため、これがどのように機能するかはわかりません。

通常の結合のみを使用するようにクエリを作り直すか、ネイティブ SQL クエリを使用します。

于 2013-06-26T13:49:52.813 に答える