JPA/JQL - Duvida sobre createQuery(query) em vários JOIN

1 resposta
jsnpereira

Olá, pessoal!!

Estou aprendendo JPA, como criar query da JPA, mas como eu acostuma criar query nativo veja codigo 1, mas estou pouco meio complicado a implementar query da JPA por causa a logica.

Código 1

select f.*
	from feed f
	inner join professor p
	on 	f.autor = p.matriculaProfessor
	inner join turma t
	on t.professor = p.matriculaProfessor
	inner join notas n
	on n.turma = t.codTurma
	inner join aluno a
	on n.aluno = a.matriculaAluno
	inner join usuario u
	on a.usuario = u.idUsuario
	where u.idUsuario = 2

Veja o modelo ER que criei

Esse modelo ER foi gerar automático pelo Netbeans a estutura pronta das entidades.

Como escrever os joins e classes em filtro… esse é pouco mais complexo. por exemplo Classe professor não tem chave estrageira da Feed e Turma, só eles recebe chave estrangueiras da Professor. Estou pouco meio confudido como criar na JPA.

1 Resposta

jsnpereira

Olá, pessoal!

Estou tentando criar query na criteria com junção, mas não consegui funciona.. a query nativo em cima e tentando criar JPA Criteria em baixo.

public List<Feed> getListFeddByUsuario(Usuario u) {
        EntityManager em = getEntityManager();
        List<Feed> list = new Vector<Feed>();

        try {
            CriteriaBuilder cb = em.getCriteriaBuilder();
            CriteriaQuery<Feed> query = cb.createQuery(Feed.class);
            Root<Professor> rp = query.from(Professor.class);
            Root<Turma> rt = query.from(Turma.class);
            Root<Notas> rn = query.from(Notas.class);
            Root<Aluno> ra = query.from(Aluno.class);
            Root<Usuario> ru = query.from(Usuario.class);
            query.where(cb.equal(ru, u));

            Query q = em.createQuery(query);

            list = q.getResultList();
        } finally {
            em.close();
        }

        return list;
    }

Mas o erro apareceu, veja em baixo:

Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'codFed' in 'field list'
Error Code: 1054
Call: SELECT codFed, assunto, dataPublicar, descricao, autor FROM lpii_tf_agenda2.usuario WHERE (idUsuario = ?)
bind => [1 parameter bound]
Query: ReadAllQuery(referenceClass=Feed sql="SELECT codFed, assunto, dataPublicar, descricao, autor FROM lpii_tf_agenda2.usuario WHERE (idUsuario = ?)")
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:333)

Aguardo ao retorno, obrigado!

Criado 14 de junho de 2013
Ultima resposta 16 de jun. de 2013
Respostas 1
Participantes 1