2

从休眠文档中,我们知道在某些情况下,为了使延迟加载工作,我们需要构建时检测:

如何阻止 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,也有各种版本,但问题仍然存在。

谢谢杨

4

0 回答 0