0

新しいオブジェクトを追加して.save()に移動し、selectを実行すると、最後に作成されたオブジェクトがDBではなくクラスから取得されます。これは、日付プロパティがSQL形式に変換されておらず、マックアップされていないことを意味します。私のフロントエンドコード。

例えば

Tue Feb 06, 2012それ以外の2012-02-06 00:00:00

すべてのオブジェクトがデータベースからプルされるようにする方法はありますか?

ありがとう

4

2 に答える 2

2

Hibernateにはいくつかのレベルのキャッシュがあります。あなたが経験しているのは、セッション/第1レベルのキャッシュです。それを無効にする方法はありません。ただし、このようなことを行うことに固執している場合は、StatelessSessionhttp ://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/batch.htmlセクション15.3の使用を検討できます。

正しくフォーマットされた日付文字列をユーザーに返すためにデータベースに依存している場合は、ユーザーインターフェイス、ビジネスロジック、および永続性レイヤーの分離を再考することをお勧めします。保存/取得しているデータを理解できる限り、データベースまたはHibernateが文字列をどのように形式化するかを気にする必要はありません。MVC、MVVM、またはその他の分離パターンを調べます。

于 2012-04-10T04:28:24.797 に答える
0

デフォルトでは、get()またはloadは最初にキャッシュから読み取り、データベースに見つからない場合はデータベースに移動します。その上で、それもキャッシュに追加されます。適切なLockModeを備えたsession.get()が必要になります。デフォルトのLockMode.NONEではありません。

さらに、保存操作がデータベースに同期されていることを保証するには、save()とget()の間にflush()が必要だと思います。

于 2012-04-10T05:12:40.423 に答える