<sql-query name="getMoreComment" cache-region="com.vrwuhan.web.domain.Gazetteer" cacheable="true" > 
    select * from gazcomment 
</sql-query> 
----------->
<sql-query name="getMoreComment" cache-region="com.vrwuhan.web.domain.Gazetteer" cacheable="true" > 
    <return alias="gaz" class="XX.XX.Gazcomment"
    select gaz.ID as {gaz.id},gaz.Name as {gaz.name} --等等
    from gazcomment gaz
</sql-query> Query query = getSession().getNamedQuery(name); 
query.setParameter(0, code); 
query.setMaxResults(10); 
//query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); 
query.list(); 试试

解决方案 »

  1.   

    <sql-query name="getMoreComment" cache-region="com.vrwuhan.web.domain.Gazetteer" cacheable="true" > 
        select * from gazcomment 
    </sql-query> 
    ----------->改成:
    <sql-query name="getMoreComment" cache-region="com.vrwuhan.web.domain.Gazetteer" cacheable="true" > 
        <return alias="gaz" class="XX.XX.Gazcomment" />
        select gaz.ID as {gaz.id},gaz.Name as {gaz.name} --等等
        from gazcomment gaz
    </sql-query> 
      

  2.   

    这样是可以,但是我这里只是举个例子,我是个连接查询,后面多了个count()的其他的东西,没用对应的
    class,这里不能返回一个map吗?返回的字段不是固定的。
      

  3.   

    返回map是可以,不过使用setResultTransformer方法定义返回类型后所包装成的对象不受hibernate管理,
    这可能是导致你对它用cache失效的原因吧(猜测性意见)