「φ」などのギリシャ文字をOracleに挿入する必要があります。私の既存のDB構造はそれをサポートしていませんでした。調べてみると、さまざまなソリューションが見つかりました.CLOBの代わりにNCLOBを使用するというソリューションを採用しました。私がUnicode、03A6を 'φ'に使用すると、完全にうまく動作し、SQLエディタでUNISTR関数を使用して挿入します。下のようなHibernateがOracleにギリシャ文字を挿入する
UPDATEコンフィグ設定CLOB = UNISTR( '\ 03A6')私は休止状態を使用して、自分のアプリケーションを介して文字を挿入しようとすると、
しかし、それは失敗します。デバッグでは、挿入する前の文字列は '\ u03A6'です。挿入後、私はそれを¿と見ます。
どうすれば解決できますか? UNISTRをどのように利用するのですか?
PN:ネイティブのsqlsまたはhqlsは使用しません。私はテーブルのエンティティオブジェクトを使用します。
編集:使用
Hibernateのバージョンは3.5.6です。これに依存する他の多くのプラグインがあるので、バージョンを変更することはできません。したがって、私は、別の記事で私の脳をラッキングし、非常に多くのオプションを試した後にHibernateエンティティ
文字はデータベースに正しく格納されていますが、(データベースではなく、セッションでギリシャ文字をサポートしない文字セットが使用されるため)画面に正しく表示されない可能性があります。保存されている内容を確認するには、DUMP機能を使用します。たとえば、 'UNISTR( '\ 03A6')、dump(UNISTR( '\ 03A6'))からdualを選択すると、フロントエンドの文字セットがサポートしているので、文字φが表示され、Typ = 1 Len = 2 :3,166 ' - 2バイトのUnicode文字の説明。文字がデータベースに正しく格納されているかどうかを確認するには、DUMP関数を使用します。 – mathguy
実際にはありません。私はDBに格納されていることがわかります。 – Maz
あなたは何を意味するのかよく分かりません。データベースには奇妙なシンボルは格納されず、バイト(0と1)のみが格納されます。あなたのフロントエンドは、あなたが何を使っていても、それらはどんなシンボルでも解釈されます。あなたは文字通りDBに格納されている¿を見ることはできません。私が提案したものを試しましたか?数秒かかるはずです。 – mathguy