我有一个带有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>
答案 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>