Mais um erro de executar é um erro de sintaxe da query em persistencia, veja a mensage de erro.
javax.faces.el.EvaluationException: java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager:
Exception Description: Syntax error parsing the query [ select t from turma t inner join notas n on n.turma = t.codTurma inner join aluno a on n.aluno = a.matriculaAluno inner join usuario u on u.idUsuario = a.usuario where u.idUsuario = ?1 ].
Internal Exception: org.eclipse.persistence.internal.libraries.antlr.runtime.EarlyExitException
Mas esse query que testei no Banco de dados e funcionou e não apareceu erro. não entendo essa Persistencia ocorreu erro.
Eu estou criando o filtro para usuario para filtrar a receber os valores só a turma.
Código dentro da Controlador da JPA
public ArrayList<Turma> getTurmaList(Usuario u) {
EntityManager em = getEntityManager();
ArrayList<Turma> lista = new ArrayList<Turma>();
String query = " select t from turma t inner join notas n on n.turma = t.codTurma inner join aluno a on n.aluno = a.matriculaAluno inner join usuario u on u.idUsuario = a.usuario where u.idUsuario = ?1 ";
try {
if (getTurmaCount() > 0) {
lista = (ArrayList<Turma>) em.createQuery(query).setParameter(1, u).getResultList();
}
} finally {
em.close();
}
return lista;
}
[quote=fdiaz2011]O que é esse 1 ali ?
a.usuario where u.idUsuario = ?1[/quote]
Esse identificação do paramentro para referencia o numero 1 quando inserir valor no paramentro o código “.setParameter(1, u)” , veja em uma linha de codigo aqui.
[quote=fdiaz2011]Pois eh. Isso ai ta errado.
Faz como o drsmachado disse.[/quote]
Errado não está, parâmetros podem ser passados de duas formas ao jpql, named (:param) e numerated (?1).
[quote=drsmachado][quote=fdiaz2011]Pois eh. Isso ai ta errado.
Faz como o drsmachado disse.[/quote]
Errado não está, parâmetros podem ser passados de duas formas ao jpql, named (:param) e numerated (?1).[/quote]
Esse erro é sintaxe da query, não parametro, esse JPQL funciona as duas formas como drsmachado disse.
Esse query que eu testando direito no Banco de dados e funcionou, mas na Persistencia não funcionou e apareceu os erros.
[quote=jsnpereira]
Esse query que eu testando direito no Banco de dados e funcionou, mas na Persistencia não funcionou e apareceu os erros.[/quote]
O problema é que na BD tu tens SQL e aqui precisas de JPQL.
A tua query terá de ser algo assim:
[code]String query = " select t from Turma t " // A entidade Turma e não a tabela turma
+"inner join t.notas n " // assumindo que a entidade Turma tem um atributo notas
"inner join n.aluno a " // assumindo que a entidade Nota (Notas ou que outro nome tiver) tem um atributo aluno
"inner join a.usuario u " // assuminuto que a entidade Aluno tem um atributo usuario