Hibernate - 如何将参数绑定为nvarchar

时间:2013-11-08 06:38:11

标签: java oracle hibernate

我有一个带有NVARCHAR2(2000 CHAR)字段的oracle数据库,我通过hibernate逆向工程生成的hbm文件如下所示

<property name="remarks" type="string">
    <column length="4000" name="REMARKS" />
</property>

在数据库中更新此文件时,我发现它绑定到varchar而不是nvarchar

org.hibernate.type.descriptor.sql.BasicBinder - binding parameter [5] as [VARCHAR]

如果我输入2000个汉字,它将超过其字段长度。
如何将其绑定到nvarchar呢?


更新
这是由于我正在使用的Oracle数据库。
Reference - “默认情况下,oracle.jdbc.OraclePreparedStatement将所有列视为CHAR。”


解决方案

结果我将defaultNChar添加到JNDI连接属性

 <connection-property name="defaultNChar">
     true
 </connection-property>

2 个答案:

答案 0 :(得分:0)

尝试像这样修改hbm文件

<property name="remarks" type="string">
    <column name="REMARKS" sql-type="nvarchar(2000)"/>
</property>

答案 1 :(得分:0)

这是由于我正在使用的Oracle数据库。
Reference - “默认情况下,oracle.jdbc.OraclePreparedStatement将所有列视为CHAR。”

结果我将defaultNChar添加到JNDI连接属性

 <connection-property name="defaultNChar">
    true
 </connection-property>