1

Glassfish v2 について、Web を検索しましたが、TopLink の重要なクエリ ヒントを使用するときにクエリ タイムアウトを指定する方法が見つかりません。EclipseLink に移行する別のオプションがありますが、それは現実的ではありません。

http://forums.oracle.com/forums/thread.jspa?threadID=974732&tstart=-1で解決策を試しました が、タイムアウト値を設定できる DatabaseQuery は実際には Toplink 用であり、TopLink の必須ではないようです。

クエリ ヒント以外に、このタイムアウト値を JDBC ドライバーに指示する方法はありますか? システムベースではなく、クエリベースで行う必要があります(これは、DISTRIBUTED_LOCK_TIMEOUTの値を変更するだけです)

4

1 に答える 1

0

Query Hintsに関する Toplink JPA のドキュメントによると:

以下の TopLink JPA ヒントを使用できます (これらの設定の詳細については、TopLink のドキュメントを参照してください)。

  • fetchSize整数を取ります。ユーザーがTopLink問合せのfetchSizeを設定できるようにします。
  • referenceClassクラスを取ります。クエリのターゲット クラスをオーバーライドします。
  • cacheUsage整数を取ります。TopLinkがオブジェクトの問合せにキャッシュを使用する方法について説明します。
  • refreshブール値を取ります。データベースからキャッシュを更新する必要がある場合は、true に設定します。
  • lockMode整数を取ります。悲観的ロックを設定します。
  • expression TopLink Expression オブジェクトを取得します。TopLink APIを使用した問合せに使用されます。
  • timeout整数を取ります。クエリのタイムアウトをミリ秒単位で設定します。

だから私の理解は、あなたがそれを行うことができるはずだということです:

Query queryEmployeesByFirstName = em.createNamedQuery("findAllEmployeesByFirstName");
queryEmployeesByFirstName.setHint("timeout", new Integer(5000));

ただし、テストされていません。

于 2010-03-20T21:30:11.077 に答える