如何将varchar转换为java.sql.Clob

时间:2016-08-25 11:59:23

标签: java hibernate hql

以前我有一个名为summary的数据库column名称,其类型为varchar

private String summary;

最近我想将此列数据类型更改为TEXT以启用存储大数据。为此,我在lob中使用了hibernate注释。

@lob
private String summary;

因此我可以将大量数据存储到该摘要字段。但问题是我有一些旧记录,摘要字段包含varchar。获取数据集时会抛出错误An attempt was made to get a data value of type 'java.sql.Clob' from a data value of type 'VARCHAR'。所以我的问题是,

  1. 我是否需要删除旧记录以解决类型不匹配问题?
  2. 是否可以使用新数据类型保留旧记录?如果是这样,我该如何实现?
  3. 在hibernate中存储大文本的最佳方法是什么?
  4. 如果有人知道放弃你的答案,请。

1 个答案:

答案 0 :(得分:1)

从字符串迁移到clob的简单方法:

1-添加像这样的中间属性

@lob private String summaryAux;

并从摘要属性中删除@lob

2-使用java main函数获取所有记录并设置" summary"进入" summaryAux"。

main(){
List<Record> records = getAllRecors();
for(Record record: records){
record.setSummaryAux(record.getSummary());}
saveRecords(records);
}

3 - 删除

@lob private String summaryAux;

从您的代码中再次将@lob放在private String summary;上,并从中删除摘要列 关联表,最后重命名summaryAux column =&gt;总结