из hibernate docs, мы знаем, что в некоторых случаях, чтобы ленивая загрузка работала, нам нужны инструменты времени сборки:
Как остановить Hibernate от нетерпеливого извлечения связанных со многими к одномуобъект один связанный объект
, поэтому я сделал следующее:
<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, метод: signature: (Lcom / mycompany / dao / UserDaoHibernateImpl; II) V) Ожидается поиск объекта / массива в стеке
это определенно связано с инструментарием выше, так как удалениеэто решает проблему;также веб-исследования также показывают, что это как-то связано с ошибками в javaasist и конфликтами между версиями spring и hibernate.
Я использую hibernate 3.5.6-Final, Spring 3.0.6-RELEASE
Я перепробовал все комбинации версий javassist и пытался изменить javassist на asm, также с различными версиями, но проблема все еще существует.
Спасибо Ян