<bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.SQLServerDialect
    </prop>
   </props>
  </property>
 </bean>
在applicationcontext。xml中加上这段就报异常:
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/classes/applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1403)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513)
 at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:450)
 at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:290)
 at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
 at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:287)
 at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:189)
 at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:545)
 at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:871)
 at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
 at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:272)
 at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:196)
 at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
 at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
 at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
 at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
 at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:987) 
问题补充:struts2已经加入,spring和struts的整合已经没有问题了。并且测试通过了。spring成功的维护的action以及action的属性,现在想进一步通过数据库验证登陆,但是出了这个问题。
我在测试通过后该了包名的大小写,通过重构操作完成的,myEclipse8.5已经提示都已经更新了引用,我查看了,确实也是更新了,但是运行tomcat后就报了以上的错误。郁闷。 
<bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
  </property>
  <property name="url"
   value="jdbc:microsoft:sqlserver://localhost:1433">
  </property>
  <property name="username" value="sa"></property>
  <property name="password" value="1"></property>
 </bean>

解决方案 »

  1.   

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="packagesToScan">
    <list>
    <value>test.model</value>
    </list>
    </property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">${dataSource.dialect}</prop>
    <prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop>
    <prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
    </props>
    </property>
    </bean>
    这是我的sessionFactory
      

  2.   

    nvocation of init method failed; nested exception is java.lang.AbstractMethodError: com.microsoft.jdbc.base.BaseDatabaseMetaData.supportsGetGeneratedKeys()Z
      

  3.   

    我现在没有加任何的mapping呢
      

  4.   

    不需要指定mappingResources?  <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
             <!--  依赖注入数据源,注入正是上文定义的dataSource-->  
             <property name="dataSource"><ref local="dataSource"/></property>  
             <!--  mappingResouces 属性用来列出全部映射文件>  
             <property name="mappingResources">  
                 <list>  
                     <!-- 以下用来列出所有的PO映射文件-->  
                     <value>lee/Person.hbm.xml</value>  
                 </list>  
             </property>  
             <!-- 定义Hibernate的SessionFactory的属性 -->  
             <property name="hibernateProperties">  
                 <props>  
                     <!--  指定Hibernate的连接方言-->  
                     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
                     <!--  不同数据库连接,启动时选择create,update,create-drop-->  
                     <prop key="hibernate.hbm2ddl.auto">update</prop>  
                 </props>  
             </property>  
         </bean>  
    --
    错误消息是init method failed。--supportsGetGeneratedKeys检查方言是否写错了。
      

  5.   

    我换成了mysql就没事了。估计是sql server2000的bug。自认为编写的没有问题。
      

  6.   

    你导入的JAR包 太多了导致了冲突
      

  7.   

    我觉得你重构的问题,在XML文件中有其它名称没改~~~~