我在应用程序中使用了Hibernate二级缓存,由于某些商业原因, 我无法再更改实体注释 。
在我的项目中,除了从Hibernate更改数据库之外,还存在其他未通过Hibernate的本机SQL。因此,从本地SQL更新数据库后,Hibernate二级缓存数据可能会过时。这就是为什么我要
禁用某些实体的二级缓存(以编程方式或更改注释的其他方式)。
提前致谢!
警告: 正如Jens Schauder指出的那样,不可能通过设置maxElementsInMemory =“
0”将Ehcache配置为在内存中存储0个元素,因为它实际上会产生相反的效果-为缓存设置无限大小。在“
hibernate缓存”页面上未提及此行为,但在“
缓存配置”页面上对此行为进行了说明。
我已经快速查看了文档,还没有找到替代方法。我无法自行删除此答案。:-(
我最初的建议:
您可以将二级缓存的实现提供程序配置为缩短TTL时间和/或存储特定实体类型的0个条目。
例如,如果您使用的是Ehcache,则可以在ehcache.xml中配置它:*
<cache
name="com.problematic.cache.EntityName"
maxElementsInMemory="0" <<== this should effectively disable caching for EntityName
overflowToDisk="false" <<== Do not overflow any entries to disk
/>
请参阅Ehcache文档中的Hibernate
Caching。
本文向大家介绍在某些情况下如何更改R数据帧中的列?,包括了在某些情况下如何更改R数据帧中的列?的使用技巧和注意事项,需要的朋友参考一下 有时,特定列的列值与另一列有某种关系,我们可能需要根据某些条件来更改该特定列的值。我们需要进行此更改,以检查列值的更改如何对所考虑的两个列之间的关系产生影响。在R中,我们可以使用单个方括号来更改列值。 示例 请看以下数据帧- 假设我们想从第2列(x2)值中减去2,
使用SpringBoot2、SpringDataJPA和Hibernate。我试图对一些从未更新过的实体使用Hibernate的二级缓存。 在我的例子中,实体与其他实体相关,因此当查询一种文档类型时,Hibernate将进行4次sql查询。使用Hibernate二级缓存时,缓存用于某些实体,但仍有一个对数据库的sql查询。我想了解为什么在一种情况下不使用缓存。 这是我的实体的样子: 当我第一次使用
我正在使用咖啡因缓存,并寻找一种方法来更新缓存中的值,而不更改其过期时间。 场景是我使用缓存来加速数据加载。数据更改延迟5秒是可以接受的,而我希望返回速度很快。此外,我希望这些缓存在第一次命中1天后过期,以避免不必要的内存使用。 因此,我希望每个缓存的密钥持续一天,但其值每5秒更新一次。 方法似乎已关闭,但刷新持续时间后的第一个返回值仍然是旧值。这对我来说并不理想,因为两次点击之间的持续时间可能是
问题内容: 我正在使用@cacheable注解缓存函数的结果。我有3个不同的缓存,每个缓存的关键是当前登录的用户的用户ID,该用户ID与方法中的参数连接在一起。在某个事件中,我想逐出所有具有以该特定用户ID开头的键的缓存条目。例如 : 我希望缓存逐出注释为: 但是当我尝试实现这一点时,它给了我一个错误: 什么是实现此目的的正确方法? 问题答案: 每个操作所有Spring Cache批注(即,等)都
问题内容: 但是,首选解决方案(属性访问)在我的情况下不起作用(我缺少列异常-为什么?) 该模型如下所示:实体和。表含有列是的表,以便它是典型的关系。 现在的问题是,如果我取的实体,我需要有机会获得价值(亦称的实体),而不取实体。我怎样才能做到这一点? 我使用的映射如下所示: 我想做的是调用而无需从DB中额外获取实体。 根据我上面提到的答案,如果我将注释从字段移到getter(在实体上,我对吗?)
问题内容: 我们使用的是带有Hazelcast 3.6.1 2级缓存的Hibernate 3.5.6-Final。 情况 我和具有Hibernate设置的实体之间存在双向,一对多关系。实体类定义如下: 父级的Hibernate映射定义如下: 子项的hibernate映射定义如下: 现在,当前代码向中添加了,如下所示: 问题是第二行代码导致Hibernate加载 所有 子代。在我们的设置中,这是一个