J'ai eu exactement le même problème, et a été en mesure de le résoudre comme ceci:
return criteria.createCriteria(A.class)
.createCriteria("b", "join_between_a_b")
.createCriteria("c", "join_between_b_c")
.createCriteria("d", "join_between_c_d")
.add(Restrictions.eq("some_field_of_D", someValue));
Note: "b"
, "c"
et "d"
dans le code font référence ci-dessus pour attribuer des noms à A
, B
et C
classes, en conséquence (la classe A
a l'attribut b
et ainsi de suite).
Pour cette solution, vous n'avez même pas besoin d'avoir les paramètres lazy
et fetch
à définir dans votre A.hbm.xml
.
http://stackoverflow.com/questions/8726396/hibernate-criteria-join-with-3-tables lien ci-dessus mentionné peut vous aider. –