2017-01-11 5 views
1

Webプロジェクトにhibernate(3.5.6-final)を使用しています。問題は、ユーザーの1人でデータを変更すると、他のユーザーとの変更がわかりません。私は2番目のものがまだキャッシュから動作すると思います。私はこの方法でデータを取得しています(ニュースレターのクラスは、私のエンティティクラスです):データベースと同期していないHibernate

public static List<Newsletter> getNewsletters() { 
     List<Newsletter> newsletter = new ArrayList<Newsletter>(); 
     Session session = null; 
     try { 
      session = HibernateConfiguration.getSession(); 
      session.clear(); 
      Criteria criteria = session.createCriteria(Newsletter.class); 
      newsletter = criteria.list(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } finally { 
      if (session != null) { 
       session.close(); 
      } 
     } 
     return newsletter; 
    } 

そして、私は次のメソッドを使用してデータを保存しています:私は理解したよう

public static void save(Object o) throws Exception{ 
     Session session = HibernateConfiguration.getSession(); 
     Transaction transaction = session.beginTransaction(); 
     session.saveOrUpdate(o); 
     transaction.commit(); 
     session.evict(o); 
     session.close(); 
    } 

がありません(ステートレスセッションを使用しない限り)キャッシュをオフにする方法。

ユーザーのデータを同期させるために何を修正する必要がありますか?

答えて

0

がセッション ドキュメント(http://docs.jboss.org/hibernate/orm/3.5/javadocs/org/hibernate/Session.html#evict(java.lang.Object))のうち、あなたのオブジェクトを立ち退かないようにしてください

が、これは、データベースの変更を同期防ぐことができますと言っています。

そして、あなたは本当にフィルタを使用して、アプリケーションコード

+0

でセッションを管理するために避けるべきでいただきありがとうございます、それは問題を解決しました。 – blase

関連する問題