我在Hibernate中有一个映射类,它包含一个命名的sql-query,它计算某些搜索参数的整数最小值。实际的查询非常复杂(所以我既不能将它作为Criteria也不能作为Hibernate-version中的HQL编写)。
数据库中的返回类型是一个整数但是我有一个Usertype将该整数映射到一个日期(在我的情况下也不可能进行db-schema修改)。
问题是:如何为通过Custom-UserType解析的命名查询指定返回类型。
我尝试了以下内容。我的用户类型是
<hibernate-mapping>
<typedef class="com.package.MyUserType" name="MyUserType"/>
<class>...</class>
<sql-query name="queryName">
<return-scalar column="alpha" type="MyUserType"/>
select min(myColumn) as alpha from Table01 where attribute=:param
</sql-query>
</hibernate-mapping>
但执行该命名查询会导致
org.hibernate.MappingException: could not determine type null
但MyUserType
在我的类映射中运行良好。
修改
我发现如果我使用com.package.MyUserType
作为类型,它工作正常。所以问题似乎是我的typedef在我的sql-query中无法正常工作。在我的课堂上它运作良好。 (注意上面显示的hibernate-mapping中的typedef-line)
Hibernate-version我必须使用:3.2.7.ga
答案 0 :(得分:4)
如我的编辑中所述:
<return-scalar column="alpha" type="com.package.MyUserType"/>
工作正常。 typedef定义由于某种原因不起作用。我没有找到任何类似我的hibernate-version的错误报告。