Pessoal, Boa Tarde!
Muito raramente utilizo JPQL no meu dia-a-dia e estou com dificuldade numa query (exemplificada no Ex2):
Pelo que entendi para fazer um JOIN em JPQL basta referenciarmos a Tabela atual com o atributo que representa a outra
Ex 1: Carregar as habilitações de Tarefas para um Usuário
[list]TarefaUsuario (ManyToOne) Usuario (“TarefaUsuario possui o id do usuário”)[/list]
" SELECT DISTINCT t"
" FROM TarefaUsuario t"
" JOIN t.usuario u" // Aqui foi tranquilo, pois tenho o atributo Usuário em TarefaUsuario
" WHERE"
" u.usuarioPK = :usuarioPK"
Minha dúvida é, e quando a tabela de cima não tiver um atributo que representa a de baixo e sim o contrário?
Ex2: (Onde enfrento o problema) Carregar as habilitações de Tarefas de um Grupo a qual um usuário pertence.
[list]TarefaUsuario (ManyToOne) Grupo (TarefaUsuario possui o id do Grupo)[/list] [list]Grupo (ManyToOne) GrupoUsuario (GrupoUsuario possui o id do Grupo)[/list][list] GrupoUsuario (ManyToOne) Usuario (GrupoUsuario possui o id do Usuario)[/list]
" SELECT"
" DISTINCT tru"
" FROM "
" TarefaUsuario tru"
" JOIN tru.Grupo grp"
" JOIN GrupoUsuario.grupo gus" // Problema está aqui, "grp" (Grupo) não tem o id de (GrupoUsuario) e sim o inverso (relacionamento é de baixo p/ cima)
" JOIN gus.Usuario uso"
" WHERE"
" uso.segUsuarioPK = :segUsuarioPK"
Quando Rodo a Aplicação estoura a seguinte exception = [color=red]org.hibernate.hql.ast.QuerySyntaxException: Invalid path: ‘null.grupo’[/color] - Provavelmente linha 6 do EX2
Espero que tenham entendido minha dúvida.
Desde já Agradeço…