首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缓存L2缓存中Hibernate集合时的异常

缓存L2缓存中Hibernate集合时的异常
EN

Stack Overflow用户
提问于 2016-09-03 15:47:36
回答 2查看 1.3K关注 0票数 3

使用Spring+JPA+Hibernate+Ehcache。

我试图在L2缓存中缓存Hibernate集合(使用EhCache)。

实体注释为@Cache(region=abc,strategy=READ_WRITE)

当我尝试用具有相同配置的@Cache注释注释懒惰/急切加载的集合时,会产生下面提到的异常:

org.hibernate.cache.ehcache.internal.nonstop.NonstopAwareEntityRegionAccessStrategy :不能将org.hibernate.cache.spi.access.CollectionRegionAccessStrategy转换为java.lang.ClassCastException

这里的议程是缓存应用程序启动时数据库中的所有数据,以获得最佳性能。

EN

回答 2

Stack Overflow用户

发布于 2017-10-03 17:37:39

解决这个明显缺陷的方法是将您的集合和实体区域命名不同:

代码语言:javascript
复制
@Entity
@Cache(usage=CacheConcurrencyStrategy.READ_ONLY, region="foo")
public class Foo {
    @Cache(usage=CacheConcurrencyStrategy.READ_WRITE, region="bar-list")
    @OneToMany
    private List<Bar> bars = new ArrayList<>();
}
票数 1
EN

Stack Overflow用户

发布于 2018-07-05 01:58:11

这在Hibernate version - 5.2.17.Final中是固定的

但是请记住,如果您希望在jpa中将缓存的对象从集合中删除,您可能希望使用NONSTRICT_READ_WRITE

See NonStrictReadWriteEhcacheCollectionRegionAccessStrategy vs ReadWriteEhcacheCollectionRegionAccessStrategy如这里所解释的,http://forums.terracotta.org/forums/posts/list/4413.page

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39308686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档