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,然后再跑跑看。