首页 > 解决方案 > OracleLobCreator 需要在 [oracle.jdbc.OracleConnection] 上工作,而不是在 [class oracle.jdbc.drive r.T4CConnection] 上工作

问题描述

使用 spring/hibernate 将文件内容上传到 oracle 11.2 DB 时出现以下错误。非常感谢任何帮助。

错误是:

OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [class oracle.jdbc.drive
r.T4CConnection] - specify a corresponding NativeJdbcExtractor

我用的是oracle 11.2 驱动是ojdbc6.jar

休眠配置

<property
    name="fileContent"
    type="org.springframework.orm.hibernate.support.ClobStringType"
    column="FILE_CONTENT" />

堆栈跟踪如下

org.springframework.dao.DataAccessResourceFailureException: Could not create Oracle LOB; nested exception org.springframework.dao.InvalidDataAccessApiUsageException: OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [class oracle.jdbc.driver.T4CConnection] - specify a corresponding NativeJdbcExtractor
    org.springframework.dao.InvalidDataAccessApiUsageException: OracleLobCreator needs to work on [oracle.jdbc.OracleConnection], not on [class oracle.jdbc.driver.T4CConnection] - specify a corresponding NativeJdbcExtractor
            at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.getOracleConnection(OracleLobHandler.java:360)
            at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.createLob(OracleLobHandler.java:328)
            at org.springframework.jdbc.support.lob.OracleLobHandler$OracleLobCreator.setClobAsString(OracleLobHandler.java:259)
            at org.springframework.orm.hibernate.support.ClobStringType.nullSafeSetInternal(ClobStringType.java:80)
            at org.springframework.orm.hibernate.support.AbstractLobType.nullSafeSet(AbstractLobType.java:159)
            at net.sf.hibernate.type.CustomType.nullSafeSet(CustomType.java:118)
            at net.sf.hibernate.persister.EntityPersister.dehydrate(EntityPersister.java:387)
            at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:460)
            at net.sf.hibernate.persister.EntityPersister.insert(EntityPersister.java:436)
            at net.sf.hibernate.impl.ScheduledInsertion.execute(ScheduledInsertion.java:37)

标签: springoraclehibernate

解决方案


https://yiingw.wordpress.com/2016/02/25/invaliddataaccessapiusageexception-oraclelobcreator-needs-to-work-on-oracle-jdbc-oracleconnection-but-on/

解决方案

无需使用 OracleLobHandler,改用 DefaultLobHandler。

你见过这个吗?


推荐阅读