действительно, как достичь гибернации во время выполнения инструментария? - PullRequest
2 голосов
/ 12 декабря 2011

из 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, также с различными версиями, но проблема все еще существует.

Спасибо Ян

...