0

NVARCHAR2(2000 CHAR) フィールドを持つ Oracle データベースを取得しました。休止状態のリバース エンジニアリングによって生成した hbm ファイルは次のとおりです。

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

データベースでこのファイルを更新しているときに、nvarchar ではなく varchar にバインドされていることがわかりました

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

漢字を 2000 文字入力すると、フィールドの長さを超えてしまいます。
代わりに nvarchar にバインドするにはどうすればよいですか?


更新
私が使用しているOracleデータベースが原因です。
参照 - 「デフォルトでは、oracle.jdbc.OraclePreparedStatement はすべての列を CHAR として扱います。」


解決

defaultNChar を JNDI 接続プロパティに追加することがわかりました

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

2 に答える 2

0

このようにhbmファイルを変更してみてください

<property name="remarks" type="string">
    <column name="REMARKS" sql-type="nvarchar(2000)"/>
</property>
于 2013-11-08T07:08:04.853 に答える
0

これは、私が使用している Oracle データベースによるものです。
参照 -「デフォルトでは、oracle.jdbc.OraclePreparedStatement はすべての列を CHAR として扱います。」

defaultNChar を JNDI 接続プロパティに追加することがわかりました

 <connection-property name="defaultNChar">
    true
 </connection-property>
于 2013-11-26T09:06:28.907 に答える