java - 尝试使用 spring 和 hibernate 用户 oracle db 时出错

标签 java spring oracle hibernate spring-mvc

正如标题中所说,尝试使用以下设置运行我的 spring 应用程序时出现异常:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx.xsd">

    <context:component-scan base-package="com.checkpoint.core.repositories.jpa" />

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@//[[url]]:[[port]]:[[sid]]" />
        <property name="username" value="username" />
        <property name="password" value="password" />
    </bean>

    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" value="dataSource" />
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
        <property name="jpaProperties">
            <map>
                <entry key="hibernate.hbm2ddl.auto" value="validate" />
                <entry key="hibernate.show_sql" value="true" />
            </map>
        </property>
        <property name="packagesToScan" value="com.checkpoint.core.models.entities" />
    </bean>

    <!-- Setup transaction management -->
    <tx:annotation-driven />

    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager" />

    <context:component-scan base-package="com.checkpoint.core.services.impl" />

</beans>

我得到以下堆栈跟踪:

Dec 01, 2015 6:17:28 PM org.apache.catalina.core.StandardContext listenerStart
SEVERE: 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 'entityManagerFactory' defined in class path resource [spring/business-config.xml]: Initialization of bean failed; nested exception is org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'javax.sql.DataSource' for property 'dataSource'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [javax.sql.DataSource] for property 'dataSource': no matching editors or conversion strategy foundorg.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
Caused by: org.springframework.beans.ConversionNotSupportedException: Failed to convert property value of type 'java.lang.String' to required type 'javax.sql.DataSource' for property 'dataSource'; nested exception is java.lang.IllegalStateException: Cannot convert value of type [java.lang.String] to required type [javax.sql.DataSource] for property 'dataSource': no matching editors or conversion strategy found

我是spring开发的新手,可能犯了很多错误

我做错了什么?

编辑:

我被要求发布我的 Maven 依赖项,所以它们在这里:

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.hateoas</groupId>
            <artifactId>spring-hateoas</artifactId>
            <version>0.19.0.RELEASE</version>
        </dependency>

        <!-- JSON Processing -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.6.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.6.3</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.3</version>
        </dependency>

        <!-- Database Driver -->
        <dependency>
            <groupId>com.oracle</groupId>
            <artifactId>ojdbc14</artifactId>
            <version>10.2.0.4.0</version>
        </dependency>

        <!-- Connection Pooling -->
        <dependency>
            <groupId>commons-dbcp</groupId>
            <artifactId>commons-dbcp</artifactId>
            <version>1.4</version>
        </dependency>

        <!-- Persistence -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.0.4.Final</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

最佳答案

改变:

<property name="dataSource" value="dataSource" />

到:

<property name="dataSource" ref="dataSource" />

因为你想引用 bean,而不是 String。

关于java - 尝试使用 spring 和 hibernate 用户 oracle db 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34025016/

相关文章:

java - Android:应用程序意外停止(进一步调查的最佳方法是什么?)

java - 我的程序有问题。我正在尝试打印 10,000 以内的所有素数,但它不会打印超过 1,2 和 3

java - spring boot中如何读写文件

java - 如何选择合适的spring、struts和hibernate版本,有什么区别?

sql - Oracle 中 DATEADD() 的等效函数

java - 来自 Java 程序的 Sqoop

Java模式换行问题

java - 从 REST 客户端接收作为 Java 对象的响应

sql - Oracle sql中使用countif计算每一行

oracle - 在 SQL PLUS ORACLE 11gr1 上使用 DATABASE 命令