hibernate 异常错误:组织,休眠,SQL语法异常错误:无法执行查询SELECT MAX(强制转换(值,整数))

gcmastyq  于 2023-01-21  发布在  其他
关注(0)|答案(1)|浏览(121)

我有一个疑问:

<query name="getMaxId">
       <![CDATA[from  Identifier where value = (select MAX (cast(value, integer)) from Identifier where type = :type) ]]>
    </query>

其中值为:<property name="value" type="java.lang.String" column="value" not-null="true"/>
并尝试使用以下命令调用它:

Query q = getSession().getNamedQuery("getMaxId");
q.setString("type", type);
List<Identifier> results = q.list();

但是,我得到一个错误:
异常错误:组织。休眠。SQL语法异常错误:无法执行查询原因:java. sql. sql语法错误异常:ORA-01722:编号无效
我也试过

<![CDATA[from  Identifier where value = (select MAX (to_number(value)) from Identifier where type = :type) ]]>

但我收到了
原因:java. lang.非法状态异常:没有节点的数据类型:org.hibernate.hql.ast.tree.AggregateNode

qlckcl4x

qlckcl4x1#

这不是解决此问题的正确方法,但解决方法是使用纯SQL而不是HQL:

createSQLQuery("SELECT MAX (to_number(value)) FROM ids");

相关问题