Я использую Grails 2.5.1 & hibernate4: 4.3.5.5 Каждый раз, когда я использую запрос гибернации, такой как: Domain.get(id)
или Domain.createCriteria
.ect.Когда-нибудь старые данные загружаются случайным образом.В основном, кеш-хранилище hibernate в сеансе, поэтому каждый раз перед запуском запроса hibernate я сначала вызываю это предложение sessionFactory.currentSession.clear()
.
Пример:
sessionFactory.currentSession.clear()
def domainInstance = DomainName.get(id)
Работает нормально.Но я думаю, что это не очень хорошая практика.И мой файл конфигурации: DataSource.groovy
hibernat
e {
//cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
//cache.region.factory_class = 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory' // Hibernate 4
cache.use_second_level_cache = false
cache.use_query_cache = false
// cache.region.factory_class = 'org.hibernate.cache.SingletonEhCacheRegionFactory' // Hibernate 3
cache.region.factory_class = 'org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory' // Hibernate 4
singleSession = true // configure OSIV singleSession mode
flush.mode = 'auto' // OSIV session flush mode outside of transactional context
connection.characterEncoding = "utf-8"
connection.useUnicode = true
jdbc.use_get_generated_keys = true
connection.defaultNChar = true
}