Параметр строки хранимой процедуры как NVARCHAR - PullRequest
0 голосов
/ 18 октября 2018

Учитывая:

  • Я пытаюсь вызвать процедуру Oracle, которая принимает входной параметр NVARCHAR2 и выполняет вставку в таблицу.
  • Я использую javax.persistance StoredProcedureQuery

    String s; //String containing unicode characters (UTF-8).
    StoredProcedureQuery sp; //created by entity manager
    sp.registerStoredProcedureParameter("name",  String.class, ParameterMode.IN);
    sp.setParameter("name", s);
    

Что я хочу:

Символы Юникода, которые должны быть записаны в дБв правильном формате.

Результат:

  1. Перед вызовом метода execute параметр связывается как (это отладочная информация)

hibernateType = {StringType}

sqlTypeDescriptor = {VarcharTypeDescriptor}

Новый вставленный результат отображается как ?????????в БД вместо символов юникода.

Что я получил до сих пор:

  1. Нет проблем со стороны БД,потому что я добился правильного результата с C # OracleCommand.

  2. Я пробовал настраиваемую конфигурацию оракула. ​​

, как это, но это не помогает:

public class CustomOracleDialect extends Oracle10gDialect {
   public CustomOracleDialect(){
       super();
       registerHibernateType(Types.NVARCHAR, StringType.INSTANCE.getName());
   }
}
...