Spring 休眠一级缓存以保存由非ID属性找到的实体

Spring 休眠一级缓存以保存由非ID属性找到的实体,spring,hibernate,jpa,caching,Spring,Hibernate,Jpa,Caching,我正在开发一个Java 8/Spring Boot 2应用程序,我注意到我的应用程序的安全模块在内部使用了我的userrepository的findByEmail方法(这是一个标准的Spring数据JPA存储库)。当我启用Hibernate SQL日志记录时,我发现这些查询在同一个会话中执行多次(安全性使用它3-4次,然后我的业务代码使用它更多次)。每次查询访问数据库时。 这让我很惊讶,因为我希望它被缓存在Hibernate的一级缓存中。在详细阅读了一下之后,我发现第一级缓存只缓存findByI

我正在开发一个Java 8/Spring Boot 2应用程序,我注意到我的应用程序的安全模块在内部使用了我的
userrepository
findByEmail
方法(这是一个标准的Spring数据JPA存储库)。当我启用Hibernate SQL日志记录时,我发现这些查询在同一个会话中执行多次(安全性使用它3-4次,然后我的业务代码使用它更多次)。每次查询访问数据库时。 这让我很惊讶,因为我希望它被缓存在Hibernate的一级缓存中。在详细阅读了一下之后,我发现第一级缓存只缓存
findById
查询的结果,而不缓存其他结果


我是否可以将
findByEmail
查询的结果缓存在一级缓存中?(我不想在会话之间共享缓存,我不想使用第二级缓存,因为我认为它应该在当前会话结束后立即失效)。

您可以尝试hibernate.cache.use\u query\u cache,并在生成query add.setCacheable(true)时尝试使用它,因此基本上设置了第二级缓存,但它不会在会议结束时失效