JPA(EclipseLink)を使って開発しています。
DBはSQLServer, Oracle, PostgreSQLの3種対応です。
APサーバはWildfly10を使っています。

【問題】
現在はOracleで開発&テストしているのですが、nvarchar2型のカラムに対して、サロゲートペアの漢字やベトナム語のような特殊な文字をアプリケーションから保存すると、"?"となってしまいます。

【確認したこと】

  1. Eclipseのデバッガで、ステップ実行及び変数ウォッチにて、画面からJavaコードには正しい文字が渡っていることを確認済み
  2. Oracle SQL Developerにて、INSERT/UPDATE文を手書きで流す場合、文字列にNプレフィクスをきちんとつければ、正しい文字が格納されることを確認済み(SELECTして取得できることを確認)
  3. 実装を全く変えずに、SQL Serverに繋ぐ(Wildflyのデータソース接続先を変更しただけ)場合は、文字化けしないことを確認済み
  4. SQL Server Management Studioにて、INSERT/UPDATE文を手書きで流す場合、文字列にNプレフィクスを付ければ、正しい文字列が格納されることを確認済み(Nプレフィクス無しだと、文字化けする)
  5. SQLServerのプロファイラで発行されているSQL文を見ると、EclipseLinkからは全ての文字列にNプレフィクスが付けられている(charでもvarcharでもnvarcharでも関係なし)。

Oracleのプロファイラの確認がすぐにできないのですが、もしかしてOracleとの違いは、「常にNプレフィクスが付けられているかどうか」でしょうか。
ojdbcの問題?
それともEclipseLink側で何か設定が必要?