日期:2014-05-19  浏览次数:20633 次

Hibernate的属性延迟加载设置问题
已经对相应的实体属性设置了lazy="true",但是发现属性延迟加载设置没有其作用,上网查了下,是因为Hibernate3属性延迟加载机制在配置外,还需要用类增强器对二进制Class文件进行强化处理(借助ANT),
  于是我参照目前普遍的build.xml设置修改如下,
XML code

<?xml version="1.0" encoding="UTF-8"?>
<project name="hibernatelazy" default="instrument" basedir=".">
    <property name="lib.dir" value="./lib"/>
    <property name="classes.dir" value="./classes"/>

    <path id="lib.class.path">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar"/>
        </fileset>
    </path>
    <target name="instrument">
        <taskdef name="instrument" classname="org.hibernate.tool.instrument.InstrumentTask">
            <classpath path="${classes.dir}"/>
            <classpath refid="lib.class.path"/>
        </taskdef>
        <instrument verbose="true">
            <fileset dir="${classes.dir}/entity">
                <include name="House.class"/>
            </fileset>
        </instrument>
    </target>
</project>


修改了实体类的位置,其他几乎完全按照网上,然后放在项目的web-inf下,与web.xml同目录。
  但是在xml文件中提示org.hibernate.tool.instrument.InstrumentTask找不到
对build,xml执行ant build命令,控制台输出信息如下
instrument:

BUILD FAILED
F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\build.xml:12: taskdef class org.hibernate.tool.instrument.InstrumentTask cannot be found

sing the classloader AntClassLoader[F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\classes;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\antlr-2.7.6.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\commons-collections-3.1.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\dom4j-1.6.1.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\hibernate3.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\javassist-3.9.0.GA.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\jta-1.1.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\ojdbc6.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\servlet-api.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\slf4j-api-1.5.8.jar;F:\eclipse_workspace\eclipse8\Fwxx_New\WebRoot\WEB-INF\lib\slf4j-simple-1.5.8.jar]

请问错在哪里,谢谢各位了,网上相关信息也少,我用的是Hibernate-3.3.2GA版本,谢谢了。
Hibernate的属性延迟加载怎么那么复杂啊,其他的延迟加载测试都没有任何问题


------解决方案--------------------
把org.hibernate.tool.instrument.InstrumentTask设为org.hibernate.tool.instrument.javassist.InstrumentTask,然后再跑跑看。