存储过程字符串参数为NVARCHAR

时间:2018-10-18 16:48:36

标签: java oracle jpa stored-procedures entitymanager

给出:

  • 我正在尝试调用需要NVARCHAR2输入的Oracle过程 参数并插入到表中。
  • 我正在使用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);
    

我想要的:

要以正确格式在db中写入的unicode字符。

结果:

  1. 在调用execute方法之前,将参数绑定为(这是调试信息)
  

hibernateType = {StringType}

     
    

sqlTypeDescriptor = {VarcharTypeDescriptor}

  
  1. 新插入的结果显示为?????????在数据库而不是 Unicode字符。

我到目前为止所得到的:

  1. db方面没有问题,因为我实现了正确的 C#OracleCommand获得结果。

  2. 我尝试了自定义oracle配置。

像这样,但没有帮助:

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

0 个答案:

没有答案