У меня есть приложение, которое использует MS SQL Server 2005 в качестве СУБД и jTDS в качестве драйвера JDBC.Все столбцы, хранящие текст, имеют тип VARCHAR.Для драйвера был задан параметр sendStringParametersAsUnicode=false
, чтобы он не отправлял все строки в кодировке Unicode (что привело бы к сканированию индекса вместо поиска индекса по индексированным столбцам, что сильно повлияло на производительность).
Теперь мне нужно сохранить текст Unicode в базе данных.Моя проблема заключается в том, что если я просто изменю тип столбца на NVARCHAR, Hibernate по-прежнему отправляет в БД строку, не являющуюся Unicode (без префикса N), и из-за вышеуказанного параметра драйвер не изменит его на Unicode.Очевидным решением было бы изменить все текстовые столбцы на NVARCHAR и удалить параметр.Тем не менее, у меня есть почти 100 текстовых столбцов, поэтому изменить их все очень сложно, и я хотел бы сделать это столбец за столбцом.Кроме того, есть некоторые столбцы, которые в идеале должны оставаться CHAR или VARCHAR, так как текст Unicode никогда не будет им записан.
Итак, есть ли способ, с помощью которого я могу сказать Hibernate отправлять значения для определенных столбцов с префиксом N, не затрагивая другие столбцы, все еще использующие VARCHAR?Насколько я понимаю, это должно решить проблему.Или, если вы можете предложить какой-то другой способ решения этой проблемы, это также будет высоко оценено.
Редактировать: В конце я решил изменить все свои текстовые столбцы на NCHAR или NVARCHAR,Что интересно, размер базы данных вырос более чем в два раза по сравнению с первоначальным размером.Я не знаю, как это возможно, но я полагаю, что должен с этим жить.