0

私は現在、要求のリストを管理する単一のエントリ ポイント ( を介して@WebService) を持っています。それぞれが DAO 操作 (つまり、createEmployee、createCompany など) です。会社には複数の従業員がいて、コマンドのリストが次の場合:

クライアント呼び出し #1:
1. createCompany
2. createEmployee
3. addEmployeeToCompany

クライアント コール #2:
1. findAllCompanies

私はすべての会社を取得しますが、それらに関連付けられている従業員は取得しません。
アプリを再デプロイし、findAllCompanies コマンドにすべての情報 (会社 + 従業員) が含まれている場合、永続性のバグのようです。
すべての Bean はステートレス (ステートフルにする必要がありますか?) であり、エンティティ マネージャーはそれらに注入されます (Web サービス Bean にのみ注入し、他の Bean に渡す必要がありますか?)。

4

1 に答える 1

0

問題は JPA のキャッシュが原因でした。

クエリは最初は正常に機能し、その後のすべてのクエリはキャッシュからフィードされます。

oracle docs には答えがあり、これは複数の方法で構成できます。

  • persistence.xml を構成し、エンティティのキ​​ャッシュ可能なパラメーターを設定する ( shared-cache-mode)
  • EntityManager のプロパティjavax.persistence.cache.retrieveModeを設定し、javax.persistence.cache.storeMode
  • EntityManager の検索または更新をjavax.persistence.cache.retrieveMode設定することによってjavax.persistence.cache.storeMode
于 2012-10-23T11:26:09.773 に答える