我正在使用带有 Spring 3.0.5 的 Hibernate 3.6。
我有一个用户对象的以下映射
<class name="foo.User" table="FOO_USER">
<id column="USER_ID" name="id" type="java.lang.Integer">
<generator class="identity"/>
</id>
<property name="firstName" column="FIRST_NAME" type="java.lang.String" length="100"/>
...
<many-to-one name="organization" column="ORGANIZATION_ID class="foo.Organization" not-null="true" update="false" />
...
用户与组织具有多对一的关系。通常,我希望急切加载该关系,因此映射坚持默认设置lazy=false(不指定任何内容)。
在某些情况下,我不想急切地加载组织。我尝试用标准指定这个
(User)getSession().createCriteria(User.class)
.add(Restrictions.eq("id",id))
.setFetchMode("organization", FetchMode.SELECT)
.uniqueResult();
但是获取模式被忽略了。Hibernate 仍然急切地加载组织关系。几个小时以来,我一直在反对这个。任何帮助,将不胜感激。