【问题标题】:Spring MVC + HibernateSpring MVC + 休眠
【发布时间】:2014-02-02 06:34:28
【问题描述】:

我在 Spring 中的休眠配置有问题。 我的项目是一个存储库项目。这是 pom.xml:

<?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 定义:

<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>

当我尝试自动装配 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

我在pom中添加了spring orm,spring mvc版本> 3,所以hibernate 4没有问题。有什么想法吗?

我有这种情况: 项目A:核心项目,maven中有spring依赖 项目B:Repository项目,这里有core项目(项目A)、hibernate-core、oracle和spring-orm依赖 项目 C:工作项目,具有 bean 配置和项目 A 和项目 B 的依赖项

谢谢

【问题讨论】:

    标签: java maven spring-mvc hibernate-4.x


    【解决方案1】:

    您的配置看起来正确,但我看到您依赖于 spring-core 3.1.1 和 spring-orm 4.0.0。 您确实应该对齐所有 Spring 模块的版本。请尝试将spring-core升级到4.0.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>
    

    【讨论】:

    • 感谢您的回答,但我尝试过使用相同版本的 spring 和 spring-orm,并且所有参考仅指定一次。我总是犯同样的错误。我有这种情况:项目A:核心项目,在maven中有spring依赖项目B:存储库项目,其中有核心项目(项目A),hibernate-core,oracle和spring-orm依赖项目C:工作项目,有依赖项中的bean配置和项目A和项目B
    • @user2992626 确保您没有复制依赖项的传递依赖项。我相信你贴了B或者C的POM,也许你从项目A中得到了一些东西。尝试注释掉这些项目中的所有依赖并依赖A的依赖并逐个添加它们,直到它重新编译并运行。你会确定这至少不是类路径问题。
    猜你喜欢
    • 1970-01-01
    • 2012-01-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 2013-09-18
    • 2015-03-13
    • 2019-03-20
    相关资源
    最近更新 更多