2

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

4

1 回答 1

4

如我的编辑所述:

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

工作正常。typedef 定义由于某种原因不起作用。对于我的休眠版本,我没有找到任何类似的错误报告。

于 2013-02-06T08:32:04.913 回答