Ajuda com Criteria Hibernate(RESOLVIDO)

Bom tarde,

Possuo as seguintes entidades:

public class Aluno {

    private Escola escola = new Escola();

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="id_creator")
    @Column(name="id_aluno")
    private Long id;

    @Column(name="nome")
    private String nome;

    @OneToOne
    @JoinColumn(name="id_contato")
    private Contato contato = new Contato();

    @Column(name="cpf")
    private String cpf;

    @Column(name="rg")
    private String rg;

    ....getter/setters
	
}

e:

public class Contato {

	@Id
    @GeneratedValue(strategy=GenerationType.AUTO, generator="id_creator")
    @Column(name="id_contato")
    private Long id;

    @Column(name="email")
    private String email;

    @Column(name="telefone")
    private String telefone;

    @Column(name="celular")
    private String celular;

	....getter/setters
}

ao realizar uma consulta:

	public Aluno findByCpf(String cpf) throws DAOException {

		FactoryDAO factory = BaseDAOFactory.getFactory();
		AlunoDAO dao = factory.getAlunoDAO();

		List<Order> order = new ArrayList<Order>();
		List<Criterion> criterion = new ArrayList<Criterion>();

		criterion.add(Restrictions.eq("escola.id", new Long(1)));
		criterion.add(Restrictions.ilike("contato.email", aluno.getContato().getEmail(), MatchMode.ANYWHERE ));
		
		List<Aluno> alunos = (List<Aluno>) dao.list(criterion, order);
		
		...

	}

utilizando criteria, estou recebendo o erro:

exception.DAOException: org.hibernate.QueryException: could not resolve property: contato.email of: entities.Aluno

Desde já agradeço.

Abaixo está linha:

Coloque:

e no lugar desta:

use:

O hibernate esta procurando uma propriedade chamada contrato.nome na classe aluno,
com nesta linha:

vc diz para ele criar um alias “c” para a tabela contato e então usa c.email que é o alias da tabela contato,
assim ele procura a propriedade email da tabela contato.

Valeu!

Perfeito!!!

Obrigado.