首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mysql、Hibernate和Lob列

Mysql、Hibernate和Lob列
EN

Stack Overflow用户
提问于 2017-10-16 05:10:49
回答 1查看 303关注 0票数 0

有人知道为什么当我尝试使用Hibernate将字符串持久化到Mysql数据库时会出现这个异常吗?

代码语言:javascript
复制
Exception in thread "main" java.lang.AbstractMethodError: Method org/apache/commons/dbcp/DelegatingPreparedStatement.setCharacterStream(ILjava/io/Reader;J)V is abstract

该列的注释如下所示:

代码语言:javascript
复制
@Lob
@Column
private String data;

我使用的是Hibernate版本5.2.11和mysql-connector-java 5.1.44,这是我能找到的最新版本。大多数人建议升级组件来修复此错误。关于我应该做什么,还有其他的想法吗?

EN

回答 1

Stack Overflow用户

发布于 2017-10-16 05:25:47

在oracle驱动程序中,hibernate会自动将大字符串更改为Clob (如果您在DB中更改了数据类型)。但在MySql中,我看到了这个问题,于是我从字段中删除了Lob,并将字符串的长度改为4k。像这样

代码语言:javascript
复制
@Column(name ="foo" , length = 4000)

因为默认长度是255。但是对于大于4k的字符串,我需要使用Clob,并通过添加以下属性来解决它:

代码语言:javascript
复制
name="hibernate.connection.SetBigStringTryClob">true</property>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46760036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档