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>