Список спящих с использованием кеша?-Не обновлять атрибут сущности - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть приложение, которое использует спящий режим.Я сделал следующее:

  1. Используется список для отображения некоторых объектов в базе данных
  2. Зарегистрирован в моей базе данных Mysql и обновил поле в некоторых объектах
  3. Используется список сновав hibernate делает запрос, идентичный 1

Объект, указанный в hibernate, не обновлен. Если я закрою и открою приложение.затем он показывает, что сущность обновлена ​​правильно.

Использует ли 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();
    }
}

Я пытался добавить эти строки в свой файл 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)

но все еще не решил мою проблему

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Добавление этих строк в мой 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 голосов
/ 06 декабря 2011

Позвольте мне угадать

После выполнения этого

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

Вы изменили записи в базе данных вручную, а затем повторно запросили?Если да, то можете ли вы закрыть сеанс, а затем повторно запустить свой код?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...