Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用OracleDataTypeFactory为oracle配置Spring数据_Spring_Oracle_Hibernate_Jpa - Fatal编程技术网

如何使用OracleDataTypeFactory为oracle配置Spring数据

如何使用OracleDataTypeFactory为oracle配置Spring数据,spring,oracle,hibernate,jpa,Spring,Oracle,Hibernate,Jpa,我是这个社区的新手,不确定我是否在正确的地方发布。。。还将此发布在Oracle的OTN上 我是Oracle的老手,但对Spring数据还不熟悉,在postGIS上做了一些工作,但现在正试图将其应用于Oracle 我的问题是:我有一个新的maven项目,有实体和存储库类,还有一个JUnit测试程序,它使用DbUnit预加载测试数据 当前配置使用beans.xml文件设置: <bean id="entityManagerFactory" class="org.springframework

我是这个社区的新手,不确定我是否在正确的地方发布。。。还将此发布在Oracle的OTN上

我是Oracle的老手,但对Spring数据还不熟悉,在postGIS上做了一些工作,但现在正试图将其应用于Oracle

我的问题是:我有一个新的maven项目,有实体和存储库类,还有一个JUnit测试程序,它使用DbUnit预加载测试数据

当前配置使用beans.xml文件设置:

<bean id="entityManagerFactory"
  class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">...
  <property name="jpaProperties">....

<bean id="vendorAdapter"
  class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
  <property name="generateDdl" value="false" />
</bean>

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
  destroy-method="close">
  <property name="driverClass" value="oracle.jdbc.OracleDriver" />
  <property name="jdbcUrl"
   value="jdbc:oracle:thin:@localhost:2632:BLADE" />...

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

好的,我们终于明白了。这里有两个问题

首先,不支持操作异常是由于在实体中使用了错误的Java类。 对于Oracle SDO_几何图形列,请使用:

 import oracle.spatial.geometry.JGeometry;

 @Column(name = "Q_POINT")
 private JGeometry qPoint;
其次,可以通过配置dbUnit以使用正确的类型工厂来解决来自dbUnit的警告。 这里的示例使用beans.xml创建具有正确设置的bean,然后dbunit使用这些设置:

    <bean id="vendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="ORACLE" />
        <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="generateDdl" value="false" />
    </bean>

  <!-- Beans to support DBunit for unit testing with Oracle. -->
  <bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean">
    <property name="datatypeFactory">
      <bean class="org.dbunit.ext.oracle.OracleDataTypeFactory"/>
    </property>
  </bean>
  <bean id="dbUnitDatabaseConnection" class="com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean">
    <property name="databaseConfig" ref="dbUnitDatabaseConfig"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="schema" value="MAIN"/>
  </bean>

  <!-- Oracle connection pool -->
  <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"
    destroy-method="close">
    <property name="connectionCachingEnabled" value="true" />
    <property name="URL">
       <value>jdbc:oracle:thin:@<dbhost>:<dbport>:<dbSID></value>
    </property>
    <property name="user">
      <value>myuser</value>
    </property>
    <property name="password">
      <value>mypwd</value>
    </property>
    <property name="connectionCacheProperties">
      <value>
        MinLimit:1
        MaxLimit:20
        InitialLimit:1
        ConnectionWaitTimeout:120
        InactivityTimeout:180
        ValidateConnection:true
      </value>
    </property>
  </bean>

jdbc:oracle:thin:@:
我的用户
mypwd
最低限额:1
最高限额:20
初始限制:1
ConnectionWaitTimeout:120
不活动时间:180
ValidateConnection:true
    <bean id="vendorAdapter"
        class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
        <property name="database" value="ORACLE" />
        <property name="databasePlatform" value="org.hibernate.dialect.Oracle10gDialect" />
        <property name="generateDdl" value="false" />
    </bean>

  <!-- Beans to support DBunit for unit testing with Oracle. -->
  <bean id="dbUnitDatabaseConfig" class="com.github.springtestdbunit.bean.DatabaseConfigBean">
    <property name="datatypeFactory">
      <bean class="org.dbunit.ext.oracle.OracleDataTypeFactory"/>
    </property>
  </bean>
  <bean id="dbUnitDatabaseConnection" class="com.github.springtestdbunit.bean.DatabaseDataSourceConnectionFactoryBean">
    <property name="databaseConfig" ref="dbUnitDatabaseConfig"/>
    <property name="dataSource" ref="dataSource"/>
    <property name="schema" value="MAIN"/>
  </bean>

  <!-- Oracle connection pool -->
  <bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource"
    destroy-method="close">
    <property name="connectionCachingEnabled" value="true" />
    <property name="URL">
       <value>jdbc:oracle:thin:@<dbhost>:<dbport>:<dbSID></value>
    </property>
    <property name="user">
      <value>myuser</value>
    </property>
    <property name="password">
      <value>mypwd</value>
    </property>
    <property name="connectionCacheProperties">
      <value>
        MinLimit:1
        MaxLimit:20
        InitialLimit:1
        ConnectionWaitTimeout:120
        InactivityTimeout:180
        ValidateConnection:true
      </value>
    </property>
  </bean>