Criteria Hibernate

Pessoal se alguém puder ajudar eu agradeço.

Ocorre o seguinte>>>
Ex:

ClassA{
B b;
}

Class B{
String valorB;
C c;
}

Classe C{
String valorC;
}

this.getSession().createCriteria(A.class);

quando faço a consulta com uma unica classe ele aceita normalmente
Ex:

criteria.add(Restrictions.eq("b.valorB", valor));

porém quando coloco referenciando a string da outra classe através do primeiro objeto ele me retorna erro.

Ex:

criteria.add(Restrictions.eq("b.c.valorC", valor));
java.lang.IllegalArgumentException: Não existe uma mensagem com a chave associada [Error]
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:425)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:228)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	br.com.name.job.measurement.control.filter.session.UserIsLoggedFilter.doFilter(UserIsLoggedFilter.java:70)
	br.com.name.job.measurement.control.filter.hibernate.session.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:62)

Tenta algo assim:

Criteria criteria = .... criteria.createCriteria("b.c", "c"); criteria.add(Restrictions.eq("c.valorC", valor));

[quote=rlazoti]Tenta algo assim:

Criteria criteria = .... criteria.createCriteria("b.c", "c"); criteria.add(Restrictions.eq("c.valorC", valor)); [/quote]

Corrigindo.

Criteria criteria = session.createCriteria(B.class);
criteria.createAlias("b.c", "c");
criteria.add(Restrictions.eq("c.valorC", valor)); 

Obrigado a todos!
Funcionou com o createAlias e tbm funciona com o createCriteria.

criteria.createCriteria("b.c", "c");
criteria.add(Restrictions.like("c.valorC", valor));

Abraços!

[quote=Thyago]Obrigado a todos!
Funcionou com o createAlias e tbm funciona com o createCriteria.
[/quote]

:wink:

o.0

Nao sabia que funcionava também.