1

Spring Roo (Spring MVC 3)、JPA 1、Hibernate、JSTL、JQUERY などを使用して Web アプリを開発しました。永続コンテキストは、JPA トランザクション マネージャーを介して管理されるアプリケーションです。使用DBはMSSQL2005です。アプリケーションは JBOSS 5 で実行されています。

すべて正常に動作します。私の質問は私の心にずっとあるものですが、まだ適切な答えに出くわしていません.

次のように仮定します。

  1. entitymanager.find() を使用してテーブル T から行を取得し、そのデータをページに表示します。
  2. 行のフィールド値の 1 つを手動で変更します (SQL GUI ツールを介して)。
  3. すぐに手順 (1) を繰り返すと、手動で更新された値が利用可能になります。

これは正しいです?私の理解では、次の場合を除き、永続化コンテキスト内の値は更新されません。

  • em.refresh() の呼び出し
  • オブジェクトは PERSISTENCE CONTEXT では使用できません (--> 代わりに DB をクエリします)

私の経験は以下のリンクと矛盾しているように見えますが、これは実際には論理的に理にかなっています。

更新されたデータ (データベース内) が JPA/Eclipselink 経由で表示されない

どうもありがとう

昼寝

4

1 に答える 1

1

これは正しい動作です。SESSION内でem.refresh()を呼び出さない限り、永続コンテキスト内の値は更新されません。Webページを再度取得すると、古いセッションが閉じられ、新しいデータが反映された新しいセッションが開かれます。

于 2012-09-05T06:53:23.177 に答える