字段都进来了,但如果你不使用那个字段,他同样没有数据。也就是只要你的代码不主动的
getUpdata()
就行了

解决方案 »

  1.   

    不是的 ...是全部加载进来的...我用junit 测试的时候发现session关了之后还能读到updata的数据
      

  2.   

    居然说我回的太多了..只能上小号来了我想我可能找到原因了,以下是hibernate3.2的文档中提到的..不过说的有点简单
    19.1.7. 使用延迟属性抓取(Using lazy property fetching) 
    Hibernate3对单独的属性支持延迟抓取,这项优化技术也被称为组抓取(fetch groups)。 请注意,该技术更多的属于市场特性。在实际应用中,优化行读取比优化列读取更重要。但是,仅载入类的部分属性在某些特定情况下会有用,例如在原有表中拥有几百列数据、数据模型无法改动的情况下。 可以在映射文件中对特定的属性设置lazy,定义该属性为延迟载入。 <class name="Document">
           <id name="id">
            <generator class="native"/>
        </id>
        <property name="name" not-null="true" length="50"/>
        <property name="summary" not-null="true" length="200" lazy="true"/>
        <property name="text" not-null="true" length="2000" lazy="true"/>
    </class>
    属性的延迟载入要求在其代码构建时加入二进制指示指令(bytecode instrumentation),如果你的持久类代码中未含有这些指令, Hibernate将会忽略这些属性的延迟设置,仍然将其直接载入。 你可以在Ant的Task中,进行如下定义,对持久类代码加入“二进制指令。” <target name="instrument" depends="compile">
        <taskdef name="instrument" classname="org.hibernate.tool.instrument.InstrumentTask">
            <classpath path="${jar.path}"/>
            <classpath path="${classes.dir}"/>
            <classpath refid="lib.class.path"/>
        </taskdef>    <instrument verbose="true">
            <fileset dir="${testclasses.dir}/org/hibernate/auction/model">
                <include name="*.class"/>
            </fileset>
        </instrument>
    </target>
    还有一种可以优化的方法,它使用HQL或条件查询的投影(projection)特性,可以避免读取非必要的列, 这一点至少对只读事务是非常有用的。它无需在代码构建时“二进制指令”处理,因此是一个更加值得选择的解决方法。 有时你需要在HQL中通过抓取所有属性,强行抓取所有内容。
    有谁有做过类似的配置吗? 可否指点一下
      

  3.   

    但是总提示我:taskdef class org.hibernate.tool.instrument.InstrumentTask cannot be found