hibernate fetchMode.Select

DetachedCriteria detachedCriteria = DetachedCriteria.forClass(User.class);

detachedCriteria.setFetchMode("roles", FetchMode.SELECT);

以上代码所产生的sql:

1) select * from user;

2) select * from user_role where user_id=?
3) ......

我有一个疑问:为什么2,3...这些sql会产生.我并没有去访问role的信息!我可能理解错了LAZY的含义.

注:1)FetchMode.SELECT表示LAZY抓取策略.
2)user与role是多对多关系.

[该贴被liubin19820808于2008-11-23 00:37修改过]

detachedCriteria.setFetchMode("roles", FetchMode.SELECT);这个是主动加载策略呀,你不用关联对象,他也会加载,你既然设置了这个,就不会保持原胡的“Lazy”模式了.