2016-08-25 2 views
0

Раньше у меня была база данных column имя называется краткое и его тип был varcharКак конвертировать VARCHAR в java.sql.Clob

private String summary; 

В последнее время я хотел изменить этот тип данных столбца в TEXT для того, чтобы хранить большие данные. Для этого я использовал lob аннотация в hibernate.

@lob 
private String summary; 

В результате того, что я могу хранить большое количество данных, что резюме field.But проблемы в том, что у меня есть некоторые старые записи, резюме поле содержит VARCHAR. Когда получить набор данных, он выдает ошибку говоря An attempt was made to get a data value of type 'java.sql.Clob' from a data value of type 'VARCHAR' .so мои вопросы,

  1. мне нужно удалить мои старые записи, чтобы решить несоответствие типов ли?
  2. Возможно ли сохранить старые записи с новым типом данных? Если да, то как я могу это достичь?
  3. Каков наилучший способ хранения большого текста в спящем режиме?

Пожалуйста, если кто-нибудь знает, отбросьте свой ответ.

ответ

1

easiet способ мигрировать из строки в CLOB:

1- добавить промежуточный атрибут как этот

@lob private String summaryAux;

и удалить @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 => Резюме

Смежные вопросы