Проблема с поиском Hibernate и интеграцией Spring

Я пытался интегрировать Spring с Hibernate Search, но получаю разные исключения с разными версиями. В моем pom.xml у меня есть следующие зависимости

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>2.1.8.1</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-spring-plugin</artifactId>
    <version>2.1.8.1</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.9</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring</artifactId>
    <version>2.5.6</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>2.5.6</version>
</dependency>
<dependency>
    <groupId>asm</groupId>
    <artifactId>asm-all</artifactId>
    <version>3.3</version>
</dependency>
<dependency>
    <groupId>asm</groupId>
    <artifactId>asm</artifactId>
    <version>3.3</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>3.6.7.Final</version>
</dependency>

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-convention-plugin</artifactId>
    <version>2.1.8.1</version>
</dependency>
<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-tiles-plugin</artifactId>
    <version>2.1.8.1</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.15</version>
</dependency>
<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.0</version>
</dependency>
<dependency>
    <groupId>commons-configuration</groupId>
    <artifactId>commons-configuration</artifactId>
    <version>1.6</version>
</dependency>

<dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-plugin</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-grid-plugin</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-richtext-plugin</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-tree-plugin</artifactId>
    <version>3.5.1</version>
</dependency>
<dependency>
    <groupId>com.jgeppert.struts2.jquery</groupId>
    <artifactId>struts2-jquery-mobile-plugin</artifactId>
    <version>3.5.1</version>
</dependency>

Я также попытался получить актуальную версию спящего режима (3.2.0 Final) из своих тестов, чтобы я мог легко сравнить совместимость поиска в спящем режиме с версией спящего режима моего приложения.

String hibernateVersion = org.hibernate.annotations.common.Version.VERSION;
System.out.println("Hibernate Version: "+ hibernateVersion);

Но всякий раз, когда я просто добавляю эти строки в свой файл pom

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-search</artifactId>
    <version>3.1.0.GA</version>
</dependency>

и попробуйте развернуть мое приложение, тогда оно дает мне исключение

ERROR org.springframework.web.context.ContextLoader.initWebApplicationContext:215 - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource ....
....
....
Caused by: java.lang.NoSuchMethodError: org.hibernate.util.SoftLimitMRUCache.<init>(I)V

person Wasif Kirmani    schedule 21.01.2014    source источник
comment
Ваши версии библиотек устарели, обновите их до последних версий.   -  person Roman C    schedule 22.01.2014


Ответы (1)


Обязательный:

Предложенный:

  • Обновите Hibernate до 4.x
  • Обновите Spring до 3.x

Если возможно, используйте Hibernate как реализацию JPA2, а не как необработанный Hibernate (старый способ). Затем вы обнаружите, что Spring больше не нужен. (по крайней мере, для сохранения), особенно если вы используете JAVA EE 6.

P.S: вам также нужно будет обновить Apache Commons и другие общие библиотеки в соответствии с последней версией, просто используйте репозиторий Maven, чтобы получить правильные номера версий.

person Andrea Ligios    schedule 22.01.2014