Hibernate-NamedSqlQuery UserType作为ReturnType

时间:2013-02-05 10:08:46

标签: java hibernate orm hibernate-mapping usertype

我在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

1 个答案:

答案 0 :(得分:4)

如我的编辑中所述:

<return-scalar column="alpha" type="com.package.MyUserType"/>

工作正常。 typedef定义由于某种原因不起作用。我没有找到任何类似我的hibernate-version的错误报告。