我正在管理DB(文件夹表)中的文件夹列表。我正在创建文件夹和获取文件夹,每个文件夹存储列表中前一个文件夹的ID(链接列表的种类),因此可以插入文件夹"在"之间两个现有文件夹。所以一个文件夹有一个' id'字段和' prev_folder_id'领域。 ' prev_folder_id'可能是其他现有文件夹的id的零。
添加新文件夹时:
正确更改数据库中的数据。但是,我看到的问题是,在获取文件夹列表时,下一个文件夹仍然指向旧的prev_folder_id而不是新的文件夹。如果我将多次触发相同的获取请求,我有时会获得旧信息,有时还会获得新的正确信息。
以下是我在DataSource.groovy中的hibernate配置:
hibernate {
cache.use_second_level_cache = false
cache.use_query_cache = false
// cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory' // Hibernate 3
cache.region.factory_class = 'org.hibernate.cache.ehcache.EhCacheRegionFactory' // Hibernate 4
singleSession = true // configure OSIV singleSession mode
flush.mode = 'auto' // OSIV session flush mode outside of transactional context
format_sql = false
use_sql_comments = true
}
我猜这个问题与缓存有关,但所有缓存选项都被禁用。什么可能导致这种行为?
答案 0 :(得分:0)
我猜它与此有关:
flush.mode = 'auto'
请参阅http://vladmihalcea.com/the-dark-side-of-hibernate-auto-flush/
您可以将其设置为'始终'如果您可以进行一些优化交易以确保一致性。