У меня точно такая же проблема, и я смог решить ее следующим образом:
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));
Примечание: "b"
, "c"
и "d"
в приведенном выше коде относятся к именам атрибутов в классах A
, B
и C
соответственно (класс A
имеет атрибут b
и т. Д. на).
Для этого решения вам даже не нужно иметь параметры lazy
и fetch
, которые должны быть установлены в вашем A.hbm.xml
.