从休眠文档中,我们知道在某些情况下,为了使延迟加载工作,我们需要构建时检测:
如何阻止 Hibernate 急切地获取多对一关联对象 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) 期望在堆栈上找到对象/数组
这绝对是由于上面的仪器,因为删除它可以解决问题;网络搜索还表明,这在某种程度上与 javaasist 中的错误以及 spring 和 hibernate 版本之间的冲突有关。
我正在使用休眠 3.5.6-Final,Spring 3.0.6-RELEASE
我已经尝试了javassist版本的所有组合,并尝试将javassist更改为asm,也有各种版本,但问题仍然存在。
谢谢杨