这篇博文(在此处引用)说 SQLQuery 不使用 Hibernate 会话缓存。但是,a) 没有证据,b) 他们不使用 SQLQuery.addEntity,这可能会提供允许 Hibernate 使用其缓存的信息。
文档没有提到以一种或另一种方式缓存。
如果我使用 addEntity,SQLQuery 是否使用会话缓存?
编辑:文档的这一部分说:
每当您将对象传递给 save()、update() 或 saveOrUpdate(),以及每当您使用 load()、get()、list()、iterate() 或 scroll() 检索对象时,该对象都会添加到Session 的内部缓存。
由于 addEntity() 允许 list() 返回对象,这意味着它正在使用缓存。我该如何检查?那些相同的文档说缓存有一种“包含”方法,可以浏览二级缓存,但不能浏览会话缓存。
编辑#2:通过打开 Hibernate 查询的日志记录,它似乎没有被缓存,但也许某些情况会使其缓存。