Hibernate 的一级缓存不适用于布尔类型?

Hibernate's first level cache not working for boolean type?

我有一个 spring @Transactional 只读服务,它跨越对 JpaRepository 的多次调用,其方法使用 returns a [=12] =].查询很重,在检查日志时看起来像是使用相同的参数执行了多次。 不应该只调用一次吗?使用Spring事务时一级缓存不工作吗?是因为它返回 boolean 而不是 @Entity 吗?

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

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

编辑:

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