正确版本的Spring和Hibernate以及所需的依赖项......由于依赖性而异常

Anu*_*pta 5 java spring hibernate

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

  • CGLIB的节点p-2.1_3.jar
  • 公地collections.jar
  • 公地dbcp.jar
  • 公地pool.jar
  • 公共-logging.jar
  • dom4j的-1.4.jar
  • 的Ehcache-1.6.0-beta1.jar
  • 冬眠-3.1.3.jar
  • 的hsqldb.jar
  • jta.jar log4j-1.2.9.jar
  • MySQL的连接器的Java-5.0.8-bin.jar
  • org.springframework.orm-3.1.0.M1.jar
  • org.springframework.transaction-3.1.0.M1.jar
  • 弹簧2.5.6.jar
  • 弹簧豆-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)
Run Code Online (Sandbox Code Playgroud)

我还添加了我的应用程序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>
Run Code Online (Sandbox Code Playgroud)

Sea*_*oyd 3

A)

注意
从 Spring 3.0 开始,Spring 需要Hibernate 3.2 或更高版本

来源:

b)

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

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


正如Matt 所说:使用像 Maven 这样的依赖管理系统,你面临的是 jar 地狱。这是一篇关于从 Maven 引用 Spring 3.x 工件的文章:

使用 Maven 获取 Spring 3 工件

  • @Anupam 恐怕没有简单的答案。您需要了解许多不同的技术及其协同工作原理。像[this one](http://www.mkyong.com/spring/maven-spring-hibernate-mysql-example/)这样的教程可以提供帮助,但几乎总是过时的。我建议坚持使用当前的 Spring Release 版本 3.0.x 并研究他们的 [hibernate 参考和示例](http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html /orm.html#orm-hibernate) (2认同)