以下是我的Hibernate映射文件的片段。我们正在使用映射到我们返回的MyCode对象的本机SQL查询。查询中指定的只有少数表实际上是在Hibernate中映射的。
<hibernate-mapping package="a.b.c.d">
<class name="MyCode" table="OVERRIDE" schema="SCHEMA1">
<id name="myId" type="java.lang.Long">
<column name=ID" length="22"/>
<generator class="assigned"/>
</id>
<property name="myCode" type="java.lang.String">
<column name=CD"/>
</property>
<property name="myDescription" type="java.lang.String">
<column name="DESC" length="120"/>
</property>
</class>
<sql-query name="retrieveCodes">
<return class="MyCode"/>
<![CDATA[
select distinct o.ID, ec.CD, o.DESC
from SCHEMA1.AEFX aefx, SCHEMA1.EC ec, SCHEMA1.FC fc, SCHEMA1.MYCODE o
....
....
我们想知道为此查询添加缓存的好处。相关数据很少更新,但会被大量阅读。
我无法在Hibernate文档中得到关于Hibernate对这些类型的查询的支持的明确答案。我猜测二级缓存可能在这里不起作用,因为Hibernate不知道上面的大多数表。 对于此本机查询的缓存,我们有哪些最佳选择?
由于
答案 0 :(得分:3)
每个本机查询都会使缓存无效,所有区域都会无效。