Учитывая:
- Я пытаюсь вызвать процедуру 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);
Что я хочу:
Символы Юникода, которые должны быть записаны в дБв правильном формате.
Результат:
- Перед вызовом метода execute параметр связывается как (это отладочная информация)
hibernateType = {StringType}
sqlTypeDescriptor = {VarcharTypeDescriptor}
Новый вставленный результат отображается как ?????????в БД вместо символов юникода.
Что я получил до сих пор:
Нет проблем со стороны БД,потому что я добился правильного результата с C # OracleCommand.
Я пробовал настраиваемую конфигурацию оракула.
, как это, но это не помогает:
public class CustomOracleDialect extends Oracle10gDialect {
public CustomOracleDialect(){
super();
registerHibernateType(Types.NVARCHAR, StringType.INSTANCE.getName());
}
}