首页 > 解决方案 > Hibernate 的一级缓存不适用于布尔类型?

问题描述

我有一个 spring@Transactional只读服务,它跨越了对 a 的多个调用,JpaRepository其中一个方法使用返回 a 的本机查询boolean。查询很繁重,并且在检查日志时似乎使用相同的参数执行了多次。不应该只调用一次吗?使用 Spring Transactions 时一级缓存不起作用吗?是因为它返回的是 aboolean而不是 a@Entity吗?

标签: javaspringhibernatecachingtransactional

解决方案


一级缓存仅适用于EntityManagers 可以管理的结果,即实体。(或休眠中的会话)

如果您想缓存其他对象或简单类型,我建议将 @Cacheable 注释与一些缓存提供程序一起使用,例如EhCache LINK

编辑:

您自己的查询不是一级缓存机制的一部分。只有像持久化、合并、更新等简单的操作才能使用它。有关更多信息,请查看本文链接


推荐阅读