Mysql和Hibernate和Lob列

时间:2017-10-15 21:10:49

标签: java mysql hibernate

当我尝试使用Hibernate将字符串保存到Mysql数据库时,有没有人知道为什么会出现此异常?

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

该列的注释如下所示:

@Lob
@Column
private String data;

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

1 个答案:

答案 0 :(得分:0)

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

@Column(name ="foo" , length = 4000)

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

name="hibernate.connection.SetBigStringTryClob">true</property>