2014-01-14 8 views
0

У меня проблема с конфигурацией спящего режима весной. Мой проект - проект репозитория. Это pom.xml:Spring MVC + Hibernate

<?xml version="1.0" encoding="UTF-8"?> 
<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/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>Framework-core-data-oracle</groupId> 
<artifactId>Framework-core-data-oracle</artifactId> 
<version>1.0-SNAPSHOT</version> 
<dependencies> 
    <dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>ojdbc6</artifactId> 
     <version>11.2.0</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>4.0.0.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.1.1.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.2.8.Final</version> 
    </dependency> 
</dependencies> 

Это мое определение бобы:

<bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="configLocation"> 
     <value>classpath:hibernate.cfg.xml</value> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

Это мой спящий режим конфигурации XML:

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE hibernate-configuration PUBLIC 
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> 
<hibernate-configuration> 
<session-factory> 
    <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
    <property name="hibernate.connection.url">jdbc:oracle:thin:@10.10.10.4:1521:BAGSTORAGE</property> 
    <property name="hibernate.connection.username">system</property> 
    <property name="hibernate.connection.password">bagstorage!</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 
    <property name="hibernate.default_schema">BAGSTORAGE</property> 
    <property name="show_sql">true</property> 
</session-factory> 
</hibernate-configuration> 

Когда я пытаюсь autowire SessionFactory У меня есть эта ошибка:

org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [org.springframework.orm.hibernate4.LocalSessionFactoryBean] for bean with name 'sessionFactory' defined in ServletContext resource -> nested exception is java.lang.ClassNotFoundException: org.springframework.orm.hibernate4.LocalSessionFactoryBean 

У меня есть весна orm, добавленная в pom, версия весны mvc> 3, поэтому нет проблем с hibernate 4. Любые идеи?

Я эта ситуация: Project A: основной проект, с пружинной зависимостью в Maven проекта B: Repository проект, где есть ядро ​​проект (проект А), спящий режим-жильный, оракул и пружинный ОРМ зависимости проект C: Работа проекта, с фасолью конфигурациями и проекта A и B проекта в зависимости

Благодарности

ответ

1

Ваша конфигурация выглядит правильно, но я вижу, вы зависите от spring-core 3.1.1 и 4.0.0 spring-orm. Вы действительно должны выровнять версии всех ваших модулей Spring. Попробуйте обновить spring-core до версии 4.0.0 и посмотреть, не исчезла ли ошибка?

+0

Спасибо за ответ, но та же ошибка с конфигурацией выровнены :( – user2992626

0

Обычно, когда класс не загружен/найден, есть 2 причины:

1. There are multiple versions of it in the classpath(2+ artifacts containing it) 
2. There is no class defined in the classpath 

У вас есть различные версии для модулей Spring, как правило, это лучшая практика, чтобы держать их в синхронизации, как это:

<properties> 
    <spring.version>4.0.0.RELEASE</spring.version> 
</properties> 

<dependencies> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-core</artifactId> 
    <version>${spring.version}</version> 
    </dependency> 
    <dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-orm</artifactId> 
    <version>${spring.version}</version> 
    </dependency> 
</dependencies> 
+0

Спасибо за ответ, но я попытался с той же версии весной и весной-ОРМ, и все ссылки указаны только один раз. I» ve всегда та же ошибка. У меня такая ситуация: Проект A: основной проект, с пружинной зависимостью в maven Проект B: проект репозитория, где есть основной проект (проект A), спящий ядро, оракулы и зависимости от весны. Проект C: Работа проекта, с конфигурациями бобов и проектом A и проектом B в зависимостях – user2992626

+0

@ user2992626 убедитесь, что у вас нет транзитивной зависимости, которая дублирует зависимость. Я считаю, что вы разместили POM B или C, возможно, вы получили что-то из проекта A. Постарайтесь прокомментировать все зависимости в этих проектах и ​​полагаться на зависимости A и добавлять их по одному, пока не вернется компиляция и запуск. Вы будете уверены, что это не проблема класса. –

Смежные вопросы