2016-03-21 3 views
2

Я пытаюсь интегрировать Hibernate Search с существующим приложением Spring MVC, где я использовал Hibernate ORM для связи с базой данных.Hibernate Search with Spring MVC

Когда я добавляю зависимости Hibernate Search в pom.xml, он бросает ниже ошибки.

[com/poc/configuration/HibernateConfiguration.class]: 
    Invocation of init method failed; nested exception is  
    java.lang.NoClassDefFoundError: org/hibernate/service/spi/BasicServiceInitiator. 

Это мой файл pom.xml.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.wex.poc</groupId> 
<artifactId>spring-security</artifactId> 
<packaging>war</packaging> 
<version>0.0.1-SNAPSHOT</version> 
<name>spring-security Maven Webapp</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <springframework.version>4.2.4.RELEASE</springframework.version> 
    <springsecurity.version>4.0.3.RELEASE</springsecurity.version> 
    <hibernate.version>4.3.11.Final</hibernate.version> 
    <hibernate.search.version>4.4.0.Final</hibernate.search.version> 
    <jstl.version>1.2</jstl.version> 
</properties> 
<dependencies> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-search-engine</artifactId> 
     <version>${hibernate.search.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-search-orm</artifactId> 
     <version>{hibernate.search.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>2.5.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.postgresql</groupId> 
     <artifactId>postgresql</artifactId> 
     <version>9.3-1100-jdbc41</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <!-- Spring --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${springframework.version}</version> 
    </dependency> 


    <!-- Spring Security --> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-web</artifactId> 
     <version>${springsecurity.version}</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-config</artifactId> 
     <version>${springsecurity.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework.security</groupId> 
     <artifactId>spring-security-taglibs</artifactId> 
     <version>${springsecurity.version}</version> 
    </dependency> 


    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>javax.servlet-api</artifactId> 
     <version>3.1.0</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>jstl</artifactId> 
     <version>${jstl.version}</version> 
    </dependency> 

</dependencies> 
<build> 
    <finalName>spring-security</finalName> 
</build> 

Я знаю, что это происходит из-за конфликт версий между спящим режимом и спящим режимом поиска.

Но я не могу найти правильную комбинацию.

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

+0

поделитесь своим файлом pom.xml –

+0

Я редактировал в вопросе. Пожалуйста, проверьте его сейчас. – Raghavendra

ответ

0

Если вы хотите использовать Hibernate ORM версии 4.3.x, последний стабильный релиз Hibernate Search поддерживает его в спящий режим поиска версия 5.3.0.Final

Вы не можете свободно смешивать любые комбинации зависимостей: мы задокументировать совместимые диапазоны в README, на страницах загрузки, на Migration Guides и, конечно же, в справочной документации.

Если у вас есть сомнения, пожалуйста, проверьте pom.xml files of the sources on GitHub.

0

Это уже спящий режим Поиск issue. Положительные решения вы можете найти в комментариях.

+0

Нет, это не так. Мы никогда не предполагали, что эта более старая версия Hibernate Search совместима с Hibernate ORM: мы четко документируем, какие версии совместимы. Пожалуйста, см. Мой ответ. – Sanne

0

Hibernate Поиск вызывает этот вопрос с Hibernate Core 4.3.0.Hibernate решить большинство проблем совместимости, вы можете проверить более подробно на GIT Hub project.

+0

Hibernate Search не вызывает никаких проблем. Люди должны использовать правильные версии. +1, чтобы всегда проверять проект github! – Sanne