簡體   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