Hibernate CreateQuery ошибка? - PullRequest
       7

Hibernate CreateQuery ошибка?

0 голосов
/ 09 октября 2011

Есть ли способ удалить кеш для конкретного именованного запроса?Я действительно не хочу удалять для всех запросов ... Или есть какой-то другой обходной путь?

Он не работает, даже если я использую обычный класс запросов ...

IЯ использую Hibernate 3.6, Glassfish 3.1.1, это Java-приложение EE (код из модуля EJB)

У меня что-то вроде этого:

public User getUserByName(String username) {
    try {
        return (User) em.createNamedQuery("User.getUserByName").setParameter("username", username).getSingleResult();
    } catch (NoResultException e) {
        return null;
    }
}
//...
if(getUserByName(entity.getUsername()!=null) {
    em.persist(entity);
}
//...
// username added in database (checked)
if(getUserByName(entity.getUsername())==null) {
    //something else
}

второй раз я использую "getUserByName"опять ... ноль ... почему?

Я думаю, что это модуль кеша (потому что, если я установил для своего провайдера eclipselink, он работает как надо) ...

Яиспользуя спящий режим для поиска ..

1 Ответ

1 голос
/ 14 октября 2011

С EclipseLink вы можете сделать это:

 Query query = em.createNamedQuery("Users.findByUsername");
 query.setHint("javax.persistence.cache.storeMode", "REFRESH");

Для спящего режима подсказка: org.hibernate.cacheMode "Переопределить режим кэширования для этого запроса (например, CacheMode.REFRESH)". Для дальнейшего чтения и понимания: старая статья

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