【问题标题】:Could not convert constructor argument value of type [org.apache.tomcat.jdbc.pool.DataSource] to required type [java.lang.String]:无法将类型 [org.apache.tomcat.jdbc.pool.DataSource] 的构造函数参数值转换为所需类型 [java.lang.String]:
【发布时间】:2015-12-12 14:15:22
【问题描述】:

我正在尝试在 jdbc 中创建数据库的池连接下面是我的代码,但我得到了

错误:

org.springframework.beans.factory.UnsatisfiedDependencyException:在类路径资源 [resources/database/Database.xml] 中定义名称为 'org.springframework.jdbc.datasource.DriverManagerDataSource#0' 的 bean 创建错误:通过不满足的依赖关系表示[java.lang.String] 类型的索引为 0 的构造函数参数:无法将 [org.apache.tomcat.jdbc.pool.DataSource] 类型的构造函数参数值转换为所需类型 [java.lang.String]:转换失败“org.apache.tomcat.jdbc.pool.DataSource”类型的值到所需类型“java.lang.String”;嵌套异常是 java.lang.IllegalStateException:无法将类型 [org.apache.tomcat.jdbc.pool.DataSource] 的值转换为所需类型 [java.lang.String]:找不到匹配的编辑器或转换策略

如果我的方法错误,我正在使用休眠将数据保存在数据库中,如何为 JDBC 数据库连接创建连接池

database.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.5.xsd">



<bean class="org.springframework.jdbc.datasource.DriverManagerDataSource">

  <constructor-arg ref="dataSource" /> 
</bean>


<bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close">
    <property name="driverClassName" value="org.h2.Driver" />
    <property name="url" value="jdbc:h2:mem:xml-config" />
    <property name="username" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="initialSize" value="5" />
    <property name="maxActive" value="10" />
    <property name="maxIdle" value="5" />
    <property name="minIdle" value="2" />
 </bean>

</beans>

【问题讨论】:

    标签: java spring hibernate tomcat jdbc


    【解决方案1】:

    请删除 DriverManagerDataSource 的 bean 声明并包括以下内容以通过 jdbcTemplate 使用池化数据源:-

    <bean class="org.springframework.jdbc.core.JdbcTemplate">
         <constructor-arg ref="dataSource" />
     </bean>
    

    【讨论】:

    • 获取 java.sql.SQLException:无法从 ClassLoader 加载类:org.h2.Driver:WebappClassLoader 上下文:/userinfo 委托:错误存储库:/WEB-INF/classes/ ----- -----> 父类加载器:org.apache.catalina.loader.StandardClassLoader@6193b845 ;ClassLoader:WebappClassLoader 上下文:/userinfo 委托:错误存储库:/WEB-INF/classes/
    • 似乎您还没有将 H2 库包含到您的项目中。请在您的 pom.xml 上使用它:- com.h2databaseh21.2.140
    • 它可以工作,但如果我尝试执行 sql 语句,我会得到 org.h2.jdbc.JdbcSQLException: Schema "TOKEN" not found; SQL 语句:
    • 我正在执行命令 list = getHibernateTemplate().find("from TokenModel where UserID=?",userid);
    • H2 URL 似乎有问题。您能否检查此链接 (h2database.com/html/features.html#database_url) 并验证您的 URL 是否适用。具体相关的架构。
    猜你喜欢
    • 1970-01-01
    • 2021-09-02
    • 2020-07-02
    • 2017-01-28
    • 2019-08-23
    • 2019-11-05
    • 2020-09-07
    • 1970-01-01
    • 2021-06-13
    相关资源
    最近更新 更多