只能通过Hibernate获取漫游的路径。
比如blog 下面有categorys和comment两个list,Hibernate不会帮你load他们出来,假设你有10个blog,设定层级(假设Hibernate能设置),那你执行的sql的顺序是:先用一个sql获得10个blog,然后为每个blog各发送2条SQL得到categorys和comment。哪么你一共要发送20条SQL,仅仅是为了这个10个blog。所以Hibernate不提供这样的功能是合理的。
但也不是没有办法,设置fetch的方式为join,这个设置是可以在程序运行的时候根据需要动态设置它。
通过Criteria或者DetachedCriteria可以动态设置FetchMode的示例:
[code="java"]String[] associatePaths = new String[]{"comment","comment.user"};
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
for (int i = 0; i < associatePaths.length; i++) {
criteria.setFetchMode(associatePaths[i], FetchMode.JOIN);
}
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);//设置返回的是实体对象,否则返回的数组
List result = criteria.list();//返回的结果则初始化了comment和comment下面的user[/code]