1

Java(hibernate 3.0 / jpa)を使用してOracleデータベース内に漢字を挿入する必要があります。多くの方法を試しましたが失敗しました。

エンティティを永続化すると、フィールドに(???)が表示され、値を取得すると同じ結果が表示されます。

私のオラクルNLS_DATABASE_PARAMETERS

NLS_CHARACTERSET   WE8MSWIN1252
NLS_NCHAR_CHARACTERSET  AL16UTF16 

列タイプはNvarcharです。このプロパティをpersistence.xmlで設定します

<property name="hibernate.connection.useUnicode" value="true"  />
<property name="hibernate.connection.characterEncoding" value="UTF-8"/>
<property name="hibernate.connection.charSet" value="UTF-8"/>
4

2 に答える 2

2

機会があれば、データベースを文字セットWE8MSWIN1252からAL32UTF8(新しいOracleインストールのデフォルト)に変換します。そうすれば、すべての問題が解消され、NCHARやNVARCHARなどの問題のあるデータ型や特別な接続設定を使用する必要がなくなります。

于 2012-06-18T12:03:09.880 に答える
1

SQL Serverでも同じ問題が発生し、すべてのvarcharフィールドをnvarcharに変換することで問題を解決しました。また、対応するすべてのストアドプロシージャとリターンタイプを変更する必要があります。すべてのプロシージャにnvarcharデータ型があることを確認してください

于 2012-06-18T10:25:56.760 に答える