select * from t where adddate= (select max(adddate) from t);
语句为oracle的,上面语句正常执行,功能即找出添加时间最大的那条记录
框架为ssh,现我要改为Hql语句,我是这样写的:
from t where adddate= (select max(adddate) from t);
但无效,当然,我可以单独的求出adddate最大值,然后再
from t where adddate= 最大值
来写,如果我想一步到位,不想分开写,怎么写?请大侠指教
都换了,只是会报错,貌似报什么max不存在什么的。
我实例类名与表名相同,实例属性与表字段命名也一样。
Exception in thread "main" java.lang.IllegalStateException: No data type for node: org.hibernate.hql.ast.tree.AggregateNode
\-[AGGREGATE] AggregateNode: 'max'
\-[IDENT] IdentNode: 'adddate' {originalText=adddate}
找不到max这个方法的话,说明hibernate配置的方言类没有注册这个max,楼主指定的是oracle的哪个方言,你自己可以写个方言类继承它,在构造方法里registerFunction( "max", new StandardSQLFunction("max") );注册下这个max方法就是了 ------解决方案-------------------- 但是我记得max方法hibernate的方言本身就注册了啊,楼主确定你的实体类名加 t ?还有小写的类名?