我有一個使用休眠的應用程序。 我做了以下內容:使用緩存的休眠列表? - 不更新實體屬性
- 使用的列表列出數據庫
- 登錄在我的MySQL數據庫manualy,並在一些 實體更新領域的一些實體
- 用於休眠再次列表做相同的查詢作爲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解決我的問題
對不起,我的第一次查詢後沒有關閉會話.......然後我創建另一個會話並重新執行相同的查詢 – fredcrs