zoukankan      html  css  js  c++  java
  • Struts2+Spring3+Hibernate4中,数据源应配置在Spring下,否则有异常:Cannot unwrap to requested type [javax.sql.DataSource]

          启动项目,报错:org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]。也就是说,不能打开数据源。可是我在Hibernate的配置文件中明明配置了数据源了啊。原来应该由Spring来管理数据源,而Hibernate只需要管理OR-Mapping就可以了。于是将Hibernate的数据源删除,在Spring中配置。代码如下:

     1 <bean id="dataSource"
     2         class="org.apache.commons.dbcp.BasicDataSource" abstract="false"
     3         lazy-init="default" autowire="default" destroy-method="close">
     4     <property name="driverClassName" value="com.mysql.jdbc.Driver"><!-- 设置数据库的驱动 -->
     5     </property>
     6     <property name="url"
     7         value="jdbc:mysql://localhost:3306/db_project"><!--设置数据库的地址 -->
     8     </property>
     9     <property name="username" value="root"></property><!-- 设置用户名 -->
    10     <property name="password" value="111"></property><!-- 设置密码 -->
    11     </bean>
    View Code

          然后将dataSource注入到sessionFactory中。代码如下:

    1 <bean id="sessionFactory"
    2         class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
    3         <property name="configLocation"
    4             value="classpath:hibernate.cfg.xml">
    5         </property>
    6         
    7         <property name="dataSource" ref="dataSource"></property>
    8     </bean>
    View Code

           org.springframework.orm.hibernate4.LocalSessionFactoryBean这个类中有相应的dataSource的setter方法,因此按照上述进行配置,就可以了。

        然后将Hibernate配置文件中关于数据源的属性全部删除,这个问题就解决了。

  • 相关阅读:
    Kotlin技术入门以及和Java对比.md
    最新版Charles破解方法(Mac+Windows).md
    阿里移动云专场专题.md
    win10下 github+hexo搭建个人博客.md
    Java内存回收机制.md
    基于补偿的数据库分布式事务实践
    Log4J,在踩坑中升级版本
    关于服务注册与发现
    JVM内存模型-重排序&内存屏障
    GC初识
  • 原文地址:https://www.cnblogs.com/cestlavie/p/4194904.html
Copyright © 2011-2022 走看看