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