我在 Hibernate 中有一个映射类,其中包含一个命名的 sql 查询,它计算某些搜索参数的整数的最小值。实际的查询非常复杂(所以我既不能把它写成 Criteria 也不能写成 Hibernate 版本的 HQL)。
数据库中的返回类型是一个整数,但我有一个用户类型,可以将该整数映射到一个日期(在我的情况下,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)
我必须使用的休眠版本:3.2.7.ga