I have classes: A,B and C
A{
B b;
}
B{
C c
}
C{
String str;
}
In a class ADao, I wanna execute the following query:
Criteria criteria = createCriteria(A.class);
criteria.add(Expression.eq("b.c.str", str));
criteria.setFetchMode("b", FetchMode.EAGER);
criteria.setFetchMode("b.c", FetchMode.EAGER);
When I execute this query, I get:
QueryException: could not resolve property b.c.str
Yo need explicit joins, with sub-criterias or aliases, as explained in the documentation:
Criteria criteria = createCriteria(A.class, "a");
criteria.createAlias("a.b", "b");
criteria.createAlias("b.c", "c");
criteria.add(Expression.eq("c.str", str));