setString не поддерживает национальные символы в PreparedStatement (Oracle 12) - PullRequest
0 голосов
/ 07 июля 2019

Мы используем Oracle версии 12.1.0.2.0 с ojdbc7-1.0.jar и JDK 8.

Мы используем Hikari в качестве пула подключений, если он актуален и использует oracle.jdbc.driver.OracleDriver

Это рекомендуемый драйвер для использования в Oracle

Соответствие спецификации JDBC версии базы данных Oracle

12.1 или 12cR1 ojdbc7.jar с JDK 7 и JDK 8

В приложении Spring мы используем PreparedStatement и хотим поддерживать национальные символы в качестве символов.

Мы используем setNString , который работает для новых / обновленных запросов

Устанавливает назначенный параметр для данного объекта String. Драйвер преобразует его в значение SQL NCHAR, NVARCHAR или LONGNVARCHAR (в зависимости от размера аргумента относительно ограничений драйвера на значения NVARCHAR) при отправке его в базу данных.

Можем ли мы добавить поддержку (уровень платформы / конфигурации) для существующего кода с использованием setString без изменения кода?

try (PreparedStatement ps = conn.prepareStatement(SQL_STATEMENT)) {
        ps.setString(1, THAI_TEXT);
}

В настоящее время setString не обрабатывает национальные символы (сохранить как?), Хотя столбцы определены как NVARCHAR2(50)

Должны ли мы заменить все setString на setNString?

или есть флаг / свойство / обновление / исправление, которое может добавить национальную поддержку с помощью setString?

...