2011-12-06 102 views
0

我有一個使用休眠的應用程序。 我做了以下內容:使用緩存的休眠列表? - 不更新實體屬性

  1. 使用的列表列出數據庫
  2. 登錄在我的MySQL數據庫manualy,並在一些 實體更新領域的一些實體
  3. 用於休眠再次列表做相同的查詢作爲1

休眠列出的實體未更新。 如果我關閉並打開應用程序。它然後顯示正確更新的實體。

hibernate默認使用某種緩存嗎?它列出了實體

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> 
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/XXX</property> 
<property name="hibernate.connection.username">XXXXXXXXXX</property> 
<property name="hibernate.connection.password">XXXXXXXXXX</property> 
<property name="show_sql">true</property> 

代碼:

 Session s = HibernateUtil.getSession(); 
     Criteria c = s.createCriteria(Solicitacao.class, "s"); 
     //Add some Restrictions here 
     List<Solicitacao> ls = c.list(); 
     s.close(); 

我的會話工廠:

public class HibernateUtil { 
    private static SessionFactory sessionFactory = null; 
    static { 
     // Configurações iniciais de caminho dos diretórios e arquivos 
     URL url = HibernateUtil.class.getProtectionDomain().getCodeSource().getLocation(); 
     File myFile = null; 
     try { 
      myFile = new File(url.toURI()); 
     } catch (Exception ex) { 

     } 
     File dir = myFile.getParentFile(); 
     File xml = new File(dir, "hibernate.cfg.xml"); 
     /* 
     * sessionFactory = new AnnotationConfiguration() .configure("br/com/netradiobrasil/pcp/" + 
     * "hibernate/hibernate.cfg.xml") .buildSessionFactory(); 
     */ 
     sessionFactory = new AnnotationConfiguration().configure(xml).buildSessionFactory(); 
    } 

    public static Session getSession() { 
     return sessionFactory.openSession(); 
    } 
} 

我tryed在我的hibernate.cfg.xml中添加這些行

<property name="hibernate.cache.use_query_cache">false</property> 
<property name="hibernate.cache.use_second_level_cache">false</property> 
<property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

也試過使用:session.setCacheMode( CacheMode.IGNORE)

但仍didnt解決我的問題

回答

0

添加在我的hibernate.cfg.xml那些線 - 使C3P0固定我的問題

<property name="hibernate.c3p0.min_size">5</property> 
<property name="hibernate.c3p0.max_size">40</property> 
<property name="hibernate.c3p0.timeout">300</property> 
<property name="hibernate.c3p0.max_statements">50</property> 
<property name="hibernate.c3p0.idle_test_period">100</property> 
0

讓我猜猜

執行此

Session s = HibernateUtil.getSession(); 
Criteria c = s.createCriteria(Solicitacao.class, "s"); 
//Add some Restrictions here 
List<Solicitacao> ls = c.list(); 

您手動更改數據庫條目,然後重新運行查詢後?如果是,那麼你可以關閉會話,然後重新運行你的代碼?

+0

對不起,我的第一次查詢後沒有關閉會話.......然後我創建另一個會話並重新執行相同的查詢 – fredcrs