Oi pessoal,
Estou com a seguinte dúvida:
Tenho duas classes:
public class Curso{
private Integer id;
private String nome;
private Disciplina disciplinas;
…
metodos set e get
…
}
public class Disciplina{
private Integer id;
private String nome;
private String periodo; // pode ser “N” (noturno) ou “D” (diurno)
…
metodos set e get
…
}
Agora quero criar uma criteria que retorne um determinado curso e suas respectivas disciplinas. Estou usando o seguinte código:
Criteria select = sessao.createCriteria(Curso.class);
select.setFetchMode( “disciplinas”, FetchMode.JOIN );
select.add(Restrictions.like(“nome”, “Engenharia de Computacao”));
List objetos = select.list();
Até aqui tudo bem, funciona muito bem, ou seja, traz TODAS as disciplinas do curso “Engenharia de Computacao”.
Mas, a questão agora é que eu quero apenas as disciplinas de TAL curso que possuam o atributo periodo igual a “N” (noturno).
Já tentei fazer algo como:
Criteria select = sessao.createCriteria(Curso.class);
select.setFetchMode( “disciplinas”, FetchMode.JOIN );
select.add(Restrictions.like(“nome”, “Engenharia de Computacao”));
select.add(Restrictions.like(“curso.disciplinas.periodo”, “N”));
Mas é retornada a seguinte exceção:
Exception in thread “main” org.hibernate.QueryException: could not resolve property: curso of: tutorial.Curso
Alguém sabe como resolver isso ?
Pode ser também usando a Query em vez da Criteria, o importante é que eu consiga “filtrar” por um atributo de outra classe.
Muito obrigado
Marcos