Olá pessoal,
estou com um problema no hibernate!
Tenho as classes Curso e Disciplina; (Só coloquei os campos que estou tendo problema)
public class Curso implements Serializable {
...
@OneToMany(mappedBy = "curso")
private List<Disciplina> disciplina;
...
}
public class Disciplina implements Serializable {
...
@OneToOne(cascade = CascadeType.ALL)
private Curso curso;
...
}
Quando eu tento executar um JOIN no HQL, dá pau…
HQL ==>>
public List<Curso> filtrar() throws Exception{
String hql = "FROM Curso curso " +
"INNER JOIN curso.disciplina AS disciplina";
return (List<Curso>) session.createQuery(hql).list();
}
Se eu tirar esta linha: “INNER JOIN curso.disciplina AS disciplina” dá certo…
Eu mando roda o programa e blz, mas quando eu tento instanciar a classe, ai dá pau por exemplo
Curso curso = listaCurso.get(i)
O problema é que o hibernate não consegue preencher a classe Curso e a listaDisciplinas que tem dentro de Curso, isso e só quando eu tendo usar HQL
Se eu usar com Criteria dá certo, assim dá certo:
public List<Curso> filtrar() throws Exception{
return (List<Curso>) session.createCriteria(Curso.class).list();
}
Os dois jeito ele gera o mesmo SQL, só que com HQL ele não consegue preencher… tem que fazer alguma coisa para sincronizar a classe Curso quando uso HQL?
LEBRANDO QUE TEM QUE SER COM “HQL”. Para mim não serve o Criteria…
Dá este erro:
SEVERE: null
java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to model.dto.Curso
Alguem sabe porque isso?