ヘッダーをスキップ
Oracle Application Serverリリース・ノート
10g リリース3(10.1.3.1.0)for Linux x86
B31915-06
  目次
目次

戻る
戻る
 
次へ
次へ
 

15 Oracle TopLink

この章では、Oracle TopLink(TopLink)に関する問題について説明します。内容は次のとおりです。

15.1 一般的な問題と対処方法

この項では、一般的な問題とその対処方法について説明します。内容は次のとおりです。

15.1.1 オブジェクト・リレーショナルに関する問題

この項の内容は次のとおりです。

15.1.1.1 SQL Server 2005の外部結合SQLの誤り

TopLinkでは、SQL Server v2005で誤った外部結合が生成されます。生成された外部結合の構文は、このデータベースのこれ以前のバージョンでは正しいものです。この問題に対処するには、データベースの互換性を再構成してください(詳細は、SQL Serverのドキュメントを参照してください)。あるいは、カスタムのTopLinkデータベース・プラットフォームを使用することもできます。

15.1.1.2 外部トランザクション制御でUnitOfWork.release()がサポートされない

作業ユニットがJava Transaction API(JTA)と同期化されている場合は、作業ユニットを解放すると例外がスローされます。現行のトランザクションで変更内容の保持が必要ない場合は、JTAトランザクションをロールバックする必要があります。

コンテナ境界トランザクションの場合は、次のEJBセッション・コンテキストでsetRollbackOnly()をコールしてください。

@Stateless
public class MySessionBean
{
    @Resource
    SessionContext sc;

    public void someMethod()
    {
        ...
        sc.setRollbackOnly();
    }
}

Bean境界トランザクションの場合は、次のEJBセッション・コンテキストで得られるUserTransactionでrollback()をコールしてください。

@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class MySessionBean implements SomeInterface
{
    @Resource
    SessionContext sc;

    public void someMethod()
    {
        sc.getUserTransaction().begin();
        ...
        sc.getUserTransaction().rollback();
    }
}

15.1.1.3 集計関数を使用したReportQueryの結果が切り捨てられる

ReportQueryを使用して計算値を返す場合、結果の変換には列のデータ型が使用されます。そのため、マップされた属性に返す値に平均、分散、標準偏差を使用すると、値はマップされた属性の型に変換され、生じた切捨てによって精度が損なわれます。

この問題に対処するには、属性のクエリー・キーのかわりにフィールドを使用してください。次に例を示します。

  • 属性のクエリー・キーを使用し、値に切捨てが生じる場合

    rq.addAverage("salary");

  • 切捨てが生じないよう、かわりにデータベースの列を使用する場合

    rq.addAverage("salary", eb.getField("SALARY.SALARY"));

15.1.1.4 1対1マッピングの属性結合が継承でサポートされない

継承階層に属し、かつ1対1の結合属性の構成を持つクラスに対してクエリーを実行することはできません。この問題は、すでにTopLink Essentialsで対処されており、解決策は次回のリリースまたは今回のリリースのパッチ・セットで提供される予定です。

15.1.1.5 一部のデータソースでOracle Databaseの拡張データ型を使用できない

一部のデータソース実装にOracle9iおよびOracle10gデータベース・プラットフォーム提供の拡張データ型を使用すると、不具合が発生する場合があります。前述のプラットフォームでは、未加工のOracle固有のJDBC接続は正しくアンラップされず、必要な変換を完了できません。この問題を回避するには、TopLinkの内部接続プーリングを使用してください。

15.1.1.6 オプティミスティック・ロックでのリターン・ポリシー

リターン・ポリシーにより、INSERTやUPDATEの間に変更された値を返してキャッシュされたオブジェクトに移入できますが、リターン・ポリシーは数値バージョンのオプティミスティック・ロックと同時には動作しません。すべてのUPDATEで返される値は1であり、意味のあるロック保護は提供されません。

数値オプティミスティック・ロックをリターン・ポリシーと同時に使用しないでください。

15.1.1.7 Timestampの使用

TopLinkでは、サーバーから返される日付および時間の情報にはTimestampが使用されているものとみなされます。JDBCドライバによって現在の日付にStringが返されると、TopLinkでは例外がスローされます。Timestampを返すドライバを使用するか、サーバー時間のかわりにローカル時間を使用するようにポリシーを変更してください。

15.1.1.8 sessions.xmlでの順序付けの構成

セッションのカスタム順序表を構成すると、TopLink Workbenchでは例外がスローされ、sessions.xmlを保存する際に編集内容が書き込まれません。これを回避するには、順序付けをプロジェクト・レベルで構成してください。 詳細は、『Oracle TopLink開発者ガイド』のプロジェクト・レベルでの順序付けの構成に関する項を参照してください。

15.1.2 オブジェクトXML(JAXB)に関する問題

この項の内容は次のとおりです。

15.1.2.1 JAXB 1.0 TopLinkプロジェクトでの非ASCII文字の使用

非ASCII文字を含むクラス名およびメソッド名を作成すると、TopLinkによって例外がスローされます。この問題は、非ASCII文字を含むXMLスキーマからJAXB 1.0 TopLinkプロジェクトを作成するときに生じます。XMLスキーマに非ASCII文字が使用されていないことを確認してください。

15.1.2.2 XML文書の保存

XML文書の保存により、XML文書をそのマップされたオブジェクト・モデルに部分的に変換できます。マップされていないコンテンツが失われず、オブジェクトのマーシャリング時にXMLに戻されるよう、XMLコンテンツが保存されます。

XMLディスクリプタで「ドキュメントの保存」オプションを選択する場合は、その他すべてのルート・ディスクリプタでもこのオプションを設定する必要があります。

ドキュメントの保存の使用時には、ルート・オブジェクトのみマーシャリングできます。ドキュメントの保存でルート以外のオブジェクトをマーシャリングしようとすると、例外が発生します。

15.1.2.3 Self「.」指定のXPathを使用する複数コンポジット・オブジェクト・マッピングのサポート不可

TopLinkでは、Self(「.」)指定のXPathを使用する単一コンポジット・オブジェクト・マッピングのみがサポートされます。これはコンポジット・オブジェクト・マッピングの数を制限するものではありません。子要素ではなく親要素にマップされたコンポジット・オブジェクトのマッピングの数のみが制限を受けます。

15.1.2.4 ドキュメントの保存でのルート以外のオブジェクトのマーシャリング

ドキュメントの保存では、ルート・オブジェクトのみがマーシャリングされます(『Oracle TopLink開発者ガイド』のドキュメントの保存の構成に関する項を参照してください)。ドキュメントの保存でルート以外のオブジェクトをマーシャリングしようとすると、例外が発生します。

15.1.3 その他の問題

この項の内容は次のとおりです。

15.1.3.1 LinuxプラットフォームでのJDK 1.6u1の使用

LinuxプラットフォームでJDK 1.6u1を使用してOracle TopLink Workbenchを起動した場合、30秒ごとに次の出力エラーが表示される場合があります。

java.util.prefs.FileSystemPreferences syncWorld
WARNING: Couldn't flush user prefs: java.util.prefs.BackingStoreException:
java.lang.IllegalArgumentException: indent-number.

このエラーは、Sun JDK 1.6(6396599)の不具合が原因で表示されます。この不具合の結果として、TopLink Workbenchプリファレンスを保存できません。エラーは継続的にログに書き込まれますが、インシデントなしにエラー・ログを最小化して作業を続行できます。

15.1.3.2 共有インストール

デフォルトのTopLinkのインストールでは、インストールを行うユーザーのみがインストール・ファイルにアクセスできます。TopLinkのインストールが共有環境にある場合は、インストーラの終了後に<ORACLE_HOME>ディレクトリ内のすべてのファイルのファイル権限を手動で変更する必要があります。実行可能ファイルには読取りおよび実行権限が必要です。実行不可能ファイルには読取り権限が必要です。ファイル権限の設定に関する情報については、ご使用のオペレーティング・システムのドキュメントを参照してください。

15.1.3.3 ようこそページ

Oracle TopLinkのインストールが完了すると、インストール中に選択した言語にかかわらず、英語のようこそページ(Welcome page)が表示されます。固有の言語で表示させるには、<ORACLE_HOME>¥toplink¥doc¥フォルダから適切なファイルを選択してください。

15.2 ドキュメントの記載内容の誤り

この項の内容は次のとおりです。

15.2.1 プログラムによるproject.xmlの作成

『Oracle TopLink開発者ガイド』に記載されているproject.xmlファイルのプログラムによる作成のコマンドは誤っています。正しいコマンドは、次のとおりです。

java -classpath toplink.jar;toplinkmw.jar;xmlparserv2.jar;ejb.jar;oracle.toplink.workbench.mappings.DeploymentXMLGenerator <MW_Project.mwp> <output file.xml>