繁体   English   中英

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

[英]How to convert varchar to java.sql.Clob

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

private String summary;

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

@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. 在休眠状态下存储大文本的最佳方法是什么?

如果有人知道,请不要回答。

从字符串迁移到Clob的最简单方法是:

1-添加这样的中间属性

@lob private String summaryAux;

并从summary属性中删除@lob

2-使用Java主函数获取所有记录,并将“摘要”设置为“ 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 => summary

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM