真的,如何实现hibernate运行时检测?

时间:2011-12-12 05:04:49

标签: hibernate instrumentation javassist

来自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,也有各种版本,但问题仍然存在。

由于 杨

0 个答案:

没有答案