我有一个疑问:
<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
1条答案
按热度按时间qlckcl4x1#
这不是解决此问题的正确方法,但解决方法是使用纯SQL而不是HQL: