Hibernate Criteria和多个join

And*_*oni 13 java hibernate join criteria

有可能用Hibernate标准吗?

select A.something, B.something, C.something, D.something
    from  A JOIN B on A.id = B.id_fk
          JOIN C ON B.id = C.id_fk
          JOIN D ON C.id = D.id_fk;
Run Code Online (Sandbox Code Playgroud)

min*_*das 17

我有完全相同的问题,并能够像这样解决它:

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));
Run Code Online (Sandbox Code Playgroud)

注:"b","c""d"在上面的代码指在属性名A,BC类,相应地(类A具有属性b等).

对于此解决方案,您甚至不需要在您的设置中设置lazyfetch参数A.hbm.xml.