java - 正确的 Spring 和 Hibernate 版本以及所需的依赖项...由于依赖项导致的异常

标签 java hibernate spring

三天以来,我一直在尝试运行我的 Spring-Hibernate 程序。由于 hibernate2 和 hibernate3 之间的版本差异,我很难找到所涉及的依赖项。 最后,我能够使用以下一组依赖项运行程序

  • cglib-nodep-2.1_3.jar
  • commons-collections.jar
  • commons-dbcp.jar
  • commons-pool.jar
  • commons-logging.jar
  • dom4j-1.4.jar
  • ehcache-1.6.0-beta1.jar
  • hibernate-3.1.3.jar
  • hsqldb.jar
  • jta.jar log4j-1.2.9.jar
  • mysql-connector-java-5.0.8-bin.jar
  • org.springframework.orm-3.1.0.M1.jar
  • org.springframework.transaction-3.1.0.M1.jar
  • spring-2.5.6.jar
  • spring-beans-2.0.4.jar

现在经过两天的努力,当我能够管理上述依赖项时,我尝试构建类似的程序,但它抛出以下错误。我尝试在线寻找解决方案,但我发现的解决方案没有正确的 spring 版本和hibernate ...谁能告诉我异常的正确原因以及 Spring 和 hibernate 的正确版本


Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myRecordDAO' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'hibernateTemplate' while setting bean property 'hibernateTemplate'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateTemplate' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:275)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:104)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1245)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
    at java.security.AccessController.doPrivileged(Native Method)

我还添加了我的应用程序 context.xml

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/subhash"/>
        <property name="username" value="root"/>
        <property name="password" value=""></property>
    </bean>


    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="dataSource"><ref local="dataSource"/></property>
        <property name="mappingResources">
            <list>
                <value>MyRecord.hbm.xml</value>
            </list>
         </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.HSQLDialect</prop>
                <prop key="show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
            </props>
        </property>

    </bean>

    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>
    <bean id="myRecordDAO" class="com.shoesobjects.MyRecordDAOHibernateWithSpring">
        <property name="hibernateTemplate"><ref local="hibernateTemplate"/></property>
    </bean>
</beans>

最佳答案

一)

Note
As of Spring 3.0, Spring requires Hibernate 3.2 or later.

来源:

二)

  • org.springframework.orm-3.1.0.M1.jar
  • org.springframework.transaction-3.1.0.M1.jar
  • spring-2.5.6.jar
  • spring-beans-2.0.4.jar

您真的认为将当前预发布版本 (3.1.x) 与旧版本(2.0.4 于 2007 年发布)混合使用是个好主意吗?


作为matt says :使用像 Maven 这样的依赖管理系统,你正在处理的是 jar hell。这是一篇关于从 maven 引用 Spring 3.x 工件的文章:

Obtaining Spring 3 Artifacts with Maven

关于java - 正确的 Spring 和 Hibernate 版本以及所需的依赖项...由于依赖项导致的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5326051/

相关文章:

java - 有什么区别 : getValueIsAdjusting() in both JScrollBar and AdjustmentEvent? + 如何监听JScrollBar的按钮?

java - 在 Java 中访问 protected 构造函数

java - Spring 芯。默认@Bean 销毁方法

java - 覆盖的 compareTo() 方法的功能

mysql - Spring - Hibernate - 动态配置多个数据库

java - 如何防止在 Spring 执行第二个查询?

java - Tomcat 找不到 H2 内存数据库

Spring Boot application.properties

java - Spring无法解析命令行参数

java - Spring Converter 复杂对象