Java hibernate4.LocalSessionFactoryBean无法强制转换为org.hibernate.cfg.Configuration

Java hibernate4.LocalSessionFactoryBean无法强制转换为org.hibernate.cfg.Configuration,java,spring,hibernate,Java,Spring,Hibernate,这似乎是一个常见的问题,但我无法解决它。 我的Spring3.1.1配置是 <bean id="sessionFactoryEditSolution" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> <property name="dataSource" ref="editSolutions-pool"/> <property name="mapp

这似乎是一个常见的问题,但我无法解决它。 我的Spring3.1.1配置是

<bean id="sessionFactoryEditSolution" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
        <property name="dataSource" ref="editSolutions-pool"/>
        <property name="mappingResources">
            <list>
                <value>/editsolutions.hibernate.cfg.xml</value>
            </list>
        </property>
        <property name="hibernateProperties">
            <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>
                <prop key="hibernate.cache.use_second_level_cache">true</prop>
                <prop key="hibernate.cache.provider_class">net.sf.ehcache.hibernate.SingletonEhCacheProvider</prop>
                <prop key="net.sf.ehcache.configurationResourceName">/ehcache.xml</prop>
                <prop key="hibernate.max_fetch_depth">6</prop>
                <prop key="hibernate.default_schema">dbo</prop>
            </props>
        </property>
    </bean> 
最初我的应用程序使用Hibernate 3,但为了将其与Spring 3.1.1集成,我将其升级为Hibernate 4。这就是为什么我必须将Hibernate 3.jar保留在我的lib文件夹中,以支持几个Hibernate 3特定的代码行。

注意事项:

  • 不能在类路径上使用两个版本的hibernate。您的旧代码应该更新
  • &x
    返回工厂bean,但不返回生成的对象。即使没有符号,这也会返回
    会话工厂
    ,而不是
    配置
  • 使用spring,您不需要
    配置
    实际上,它是在幕后处理的
  • 我们正在使用Hibernate3和Spring3.1。3.1.1可能有所不同,但要么保留两者的较低版本,要么升级两者(包括代码)
有几个注意事项:

  • 不能在类路径上使用两个版本的hibernate。您的旧代码应该更新
  • &x
    返回工厂bean,但不返回生成的对象。即使没有符号,这也会返回
    会话工厂
    ,而不是
    配置
  • 使用spring,您不需要
    配置
    实际上,它是在幕后处理的
  • 我们正在使用Hibernate3和Spring3.1。3.1.1可能有所不同,但要么保留两者的较低版本,要么升级两者(包括代码)

使用同一jar的多个版本运行应用程序将不起作用。@PauKiatWee那么有没有办法用Hibernate 3实现Spring 3.1.1,或者将Hibernate 3的特定类迁移到Hibernate 4?我已经对此进行了快速代码转储:这将返回FactoryBean,而不是配置。getBean(“&sessionFactoryEditSolution”)@丹:从传递给getBean()的字符串中取出符号。但即使这样,它也不会返回配置;它将返回一个Hibernate SessionFactory。另外,您的resourceMappings应该是hbms,而不是hibernate.cfg.xml。使用同一jar的多个版本运行应用程序将不起作用。@PauKiatWee那么有没有办法用hibernate 3实现Spring 3.1.1或将hibernate 3的特定类迁移到hibernate 4?我已经对此进行了快速代码转储:这将返回一个FactoryBean,不是配置。getBean(“&sessionFactoryEditSolution”)@丹:从传递给getBean()的字符串中取出符号。但即使这样,它也不会返回配置;它将返回一个Hibernate SessionFactory。另外,您的资源映射应该是hbms,而不是hibernate.cfg.xml。当然,这样您就得到了
SessionFactory
。然后您应该调用
.getConfiguration()
。我编辑了链接问题以使其更清晰。当然,这样你就可以得到
会话工厂。然后您应该调用
.getConfiguration()
。我编辑了相关问题以使其更清楚。
Configuration editSolutionsConfiguration = `(Configuration)AppContext.getBean("&sessionFactoryEditSolution");`