当前位置: 首页 > 知识库问答 >
问题:

在L2 Cache Ehcache中缓存Hibernate Collection时出现异常

戚鸿
2023-03-14

使用Spring JPA Hibernate Ehcache。

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

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

当我尝试使用具有相同配置的注释来注释@CACHE个LAZY/EAGER 加载的集合时,它会导致下面提到的异常:

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

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

共有2个答案

袁良弼
2023-03-14

这在< code>Hibernate版本- 5.2.17.Final中已修复

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

< code >请参阅NonStrictReadWriteEhcacheCollectionRegionAccessStrategy vs ReadWriteEhcacheCollectionRegionAccessStrategy ,如http://forums.terracotta.org/forums/posts/list/4413.page所述

花稳
2023-03-14

解决这个明显错误的方法是用不同的名称命名集合和实体区域:

@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<>();
}
 类似资料:
  • 我有几个问题: > 在local docker runner for web console中,我看不到监控,那只是专门针对联机工具: 对于联机控制台,我下载了java代码并尝试运行LoadCaches,但是得到了很多错误: [09:13:51,089][Serial][MGMT-#47%ImportedCluster1%][GridTaskWorker]无法从ComputeTask.result

  • 我遇到了一个类似于这个问题中描述的问题。 我有一个在开发环境中运行良好的测试套件。其中一个测试在比特桶管道中执行时失败,但以下例外: 我想尝试公认的解决方案,但我不知道如何将其应用到我的项目中。第二种解决方案依赖于ehcache。xml文件。我没有这个文件,一切都是在JavaConfig中配置的。我如何在JavaConfig中采用针对EhCache-JCache(JSR-107)的拟议解决方案?

  • 我需要使用chartengine为我的应用程序创建饼图,在那里我需要为类别及其费用绘制饼图。我需要在饼图中获得类别,所以我从数据库中将类别放入arraylist中,然后将它们放入数组中。 现在它给出了例外。 10-29 21:41:22.720 878-878/com.example.username.weddingplanning e/AndroidRuntime:致命异常:main java.

  • 我有一个关于内存系统遵循的策略的基本问题。 考虑一个具有私有L1和L2缓存的核心。在L2缓存之后,我们有一个相干流量运行的总线。现在,如果从L2高速缓存中逐出地址(X)的高速缓存行,是否有必要从L1高速缓存中逐出该地址?? 逐出的原因可能是它有助于保持一致性协议的不变[如果l2中的一行显示无效,则此核心不包含此地址]。

  • 我在扩展ReplayingDecoder的DecodeEventHandler类中遇到ResourceAkDetector异常。我很难理解何时何地应该释放任何方法的bytbuf。我需要释放传递的字节Buf吗?我尝试释放header、eventBody和attachedData ByteBuf对象,但这在稍后的代码中产生了问题。密码是... 附加信息 当我释放由调用ByteBuf.readBytes

  • 我们正在使用spring boot starter data redis(1.5.9.RELEASE)以集群模式连接到AWS弹性缓存(redis)。 如果我们不启用Redis Auth(密码)并在AWS弹性缓存中加密传输中的数据,一切都很好。 当数据传输和启用redis auth时,我们得到连接重置异常。 以下例外情况: 更多异常详情: