当我尝试使用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,这是我能找到的最新版本。大多数人建议升级组件以修复此错误。关于我应该做什么的任何其他想法?
答案 0 :(得分:0)
在oracle驱动程序中,hibernate会自动将大字符串更改为Clob(如果更改数据库中的数据类型)。但是在MySql中,我看到了这个问题,我从字段中删除Lob
并将字符串的长度更改为4k。
喜欢这个
@Column(name ="foo" , length = 4000)
因为默认长度是255.但是对于更大(超过4k)的字符串,我需要使用Clob并通过添加此属性来解决它:
name="hibernate.connection.SetBigStringTryClob">true</property>