我正在使用映射到同一个hibernate类的多个hibernate命名查询。
问题是因为不同的命名查询返回不同的属性,而不是所有属性我都收到“无效列”错误。解决它的方法是确保查询映射hibernate类定义的所有属性。 (Hibernate native query : Invalid Column Name Error SQL-17006)
以下是我所拥有的样本:
<hibernate-mapping>
<class name="com.company.ObjectA" mutable="false" >
<id name="id" type="string"/>
<property name="prop1" type="string"/>
<property name="prop2" type="string"/>
</class>
<sql-query name="get1">
<return alias="a" class="com.company.ObjectA"/>
<![CDATA[
select
id as {a.id},
prop1 as {a.prop1}
from TABLE_A
]]>
</sql-query>
<sql-query name="get2">
<return alias="a" class="com.company.ObjectA"/>
<![CDATA[
select
id as {a.id},
prop2 as {a.prop2}
from TABLE_A
]]>
</sql-query>
</hibernate-mapping>
我已经定义了一个临时修复,其中查询返回空值以确保映射所有hibernate类属性:
<sql-query name="get2">
<return alias="a" class="com.company.ObjectA"/>
<![CDATA[
select
id as {a.id},
'' as {a.prop1},
prop2 as {a.prop2}
from TABLE_A
]]>
</sql-query>
但这并不理想,因为对于我的实际案例,我有很多这些未映射的属性,以及在hibernate类中使用不同属性组合的更多命名查询。
还有其他方法可以解决吗?此外,我需要它将数据返回到同一个对象'ObjectA',因为它与其余代码集成。