Search code examples
hibernatehibernate-criteria

create query using hibernate criteria


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


Solution

  • 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));