来自hibernate docs,我们知道在某些情况下,对于延迟加载工作,我们需要构建时间检测:
How to stop Hibernate from eagerly fetching many-to-one associated object 一个相关的对象
所以我做了以下事情:
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.3</version>
<configuration>
<tasks>
<taskdef name="instrument" classname="org.hibernate.tool.instrument.javassist.InstrumentTask">
<classpath>
<path refid="maven.runtime.classpath" />
<path refid="maven.plugin.classpath" />
</classpath>
</taskdef>
<instrument verbose="true">
<fileset dir="target/classes">
<include name="**/*.class" />
</fileset>
</instrument>
</tasks>
</configuration>
<executions>
<execution>
<phase>process-classes</phase>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
但它出错了
java.lang.VerifyError :( class:com / mycompany / dao / UserDaoHibernateImpl $ 2,method:signature:(Lcom / mycompany / dao / UserDaoHibernateImpl; II)V)期望在堆栈上找到对象/数组
这绝对是由于上面的仪器,因为删除它可以解决问题; websearches也表明这与javaasist中的bug以及spring和hibernate版本之间的冲突有某种关联。
我正在使用hibernate 3.5.6-Final,Spring 3.0.6-RELEASE
我已经尝试了所有javassist版本的组合,并尝试将javassist更改为asm,也有各种版本,但问题仍然存在。
由于 杨