我在数据库上有一个表,我想只从结果集加载一些列,因为在Hibernate中映射的主对象与自身有关系,而且对象非常大。我在hbm文件中定义了一个本机sql查询:
<sql-query name="query">
<return alias="r" class="RawData"/>
<![CDATA[
SELECT DESCRIPTION as {r.description}
FROM RAWD_RAWDATAS r
WHERE r.RAWDATA_ID=?
]]>
</sql-query>
但是此查询失败并显示错误:无法从结果集中读取列值:RAWDATA1_14_0_;列名无效SQL错误:17006,SQLState:null ,因为Hibernate尝试从结果集加载所有字段。我在Hibernate JIRA中也发现了一个错误(http://opensource.atlassian.com/projects/hibernate/browse/HHH-3035)。任何人都知道如何通过解决方法完成此任务?
答案 0 :(得分:2)
在使用本机SQL查询时,可能需要使用Result Transformer:
编辑: 这里描述了JPA的功能: http://download.oracle.com/javaee/5/api/javax/persistence/SqlResultSetMapping.html
答案 1 :(得分:1)