jpa - Erro NamedQuery
Perguntas � jpa � Erro NamedQuery
Erro NamedQuery
Está apresentando o seguinte erro na minha named query
org.hibernate.QueryException: illegal attempt to dereference collection [alunos0_.matricula.turma] with element property reference [id] [select a from br.com.colegio.model.Alunos a where a.turma.id = :id_turma]
Segue as duas Entidades:
@NamedQuery(query = "select t from Turmas t", name = "getAllTurmas")
public class Turmas {
private int anoTurma;
@ManyToMany(mappedBy = "turma")
private Collection<Alunos> alunos = new ArrayList<Alunos>();
@NamedQuery(query = "select a from Alunos a", name = "getAllAlunos"),
@NamedQuery(query = "SELECT a FROM Alunos a WHERE a.turma.id = :id_turma", name = "getAlunoByTurma") })
private Long rg;
private String nomeResponsavel;
private Long rgResponsavel;
private String cpfResponsavel;
private String pai;
private Collection<Turmas> turma;
private Calendar dataDeNascimento;
/* getters e setters*/
Só uma dica em relação ao nome de suas classes, Alunos representa um aluno, e não muitos alunos. Quando você faz Alunos al = new Alunos(); você está criando apenas um aluno, o mesmo vale para Turma, eu sugiro que remova esses "s" (plural), do nome de suas classes.
— Douglas Arantes 12 de ago de 2014
o Erro acontece pois você está tentando navegar em uma lista. Sua entidade Alunos tem uma Lista de turma e na sua query você está tentando navegar como se fosse apenas um objeto. Tente SELECT a FROM Alunos a JOIN FETCH a.turma turma WHERE turma.id = :id_turma" .. Verifique também seu relacionamento se realmente é N para N.
— cissoide 12 de ago de 2014
Obrigado cissoide, Pode criar uma resposta pra eu poder marcá-la como certa? E vlw Douglas! É que no caso esta aplicação está sendo feita por mim meramente para estudos, não me atentei muito a nomes de classes, mais ao uso das tecnologias e alguns padrões de projeto. Fiquei com preguiça de ter o trabalho de alterar o nome de tabelas/campos e usei o mesmo da classe haha
— Jezz 12 de ago de 2014
Ok, mas lembre que o nome de suas classes, atributos, métodos, são muito importantes.
É isso mesmo, obrigadão!
— Jezz 14 de ago de 2014
Não é a resposta que estava procurando? Procure outras perguntas com as tags jpa hibernate sql mysql ou faça a sua própria pergunta.