开发者社区> 问答> 正文

请问Hibernate 怎么映射oracle Clob字段?

现在的项目由于我升级了Hibernate 3.x 到 4.x之后,已有的一个字段已经在Oracle数据库中映射为CLOB类型,原来3.x的映射方式如下:

@Lob
@Basic(fetch = FetchType.EAGER) 
@Column(columnDefinition="CLOB", nullable=true) 
public String getWkt() {
    return wkt;
}

升级为4.x(4.2.6)之后出现了一个Exception:

java.lang.AbstractMethodError: oracle.jdbc.driver.T4CPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V
    at org.hibernate.type.descriptor.sql.ClobTypeDescriptor$4$1.doBind(ClobTypeDescriptor.java:114)
.........

我在网上寻找了多中答案,还是没有解决,我找的答案有如下几种:
升级ojdbc驱动(问题依旧),我使用的驱动为ojdbc14.jar和ojdbc6.jar
增加Hibernate全局配置:hibernate.jdbc.use_streams_for_binary=true
增加Hibernate的Type注解:@Type(type="org.hibernate.type.MaterializedClobType")
以上的尝试问题仍没有解决!

所以我想求助各位前辈,能够给小弟一个正确的使用Hibernate 4.x 和JPA映射CLOB类型字段的例子?

各位不好意思,我已经找到问题了:是我自己粗心,使用的OJDBC的版本有问题,我很久前把老版本的JAR包放到JRE的LIB/EXT中导致了我在测试段更改OJDBC版本没有起作用。呵呵,谢谢各位!

解决办法:将ojdbc14.jar升级为ojdgc6.jar,在配合以上我的配置即可!

展开
收起
爵霸 2016-02-29 16:04:00 4431 0
1 条回答
写回答
取消 提交回答
  • 你好!我也遇到了类似的问题。

    我将ojdbc14.jar升级为ojdbc6.jar,

    修改了配置文件

    @Lob
    @Column(name="LOG_REQUEST_INFO",columnDefinition="CLOB", nullable=true)
    private String logRequestInfo;

    但是问题仍然没有得到解决,请问还有其他地方需要修改的吗?期待您的回复

    2019-07-17 18:50:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像