解决hql子查询不能用max聚合函数的问题
来源:互联网 发布:数据分析图表类型 编辑:程序博客网 时间:2024/06/05 17:38
hibernate框架下想查出日志表最新的一条记录,因为主键id是递增的,所以用子查询选出表中最大的id作为主查询的条件,代码如下:
public class MonitorDAO extends HibernateEntityDao<TLog> {
public TLog findLatestLog() {
String sql = "from TLog where id=(select max(id) fromTLog )";
List<TLog> results = this.find(sql);
return results.get(0);
}
}
执行报错,报错信息如下:
具体原因我也不是很清楚,但想到用原生SQL来代替hql,修改后的代码如下:
public class MonitorDAO extends HibernateEntityDao<TLog>{
@SuppressWarnings("unchecked")
public TLog findLatestLog()() {
String sql = "select * from T_LOG where id=(select max(id) from T_LOG)";
List<Object[]> list = this.getSession().createSQLQuery(sql).list();
TLog log = new TLog();
Object[] obj = list.get(0);
log.setId(Long.valueOf(obj[0].toString()));
log.setBeginTime((java.util.Date) obj[1]);
log.setEndTime((java.util.Date) obj[2]);
log.setLoadTime(obj[3].toString());
return log;
}
}
完美解决问题,在hibernate持久层框架下一般能用hql解决的就用hql,用hql实在解决不了的复杂操作,用原生SQL是一种很好的解决方案。
- 解决hql子查询不能用max聚合函数的问题
- hql中聚合函数查询
- 解决不能用 ./运行的问题
- 解决输入法不能用的问题
- 解决国内gem不能用的问题
- 解决国内gem不能用的问题
- 解决国内gem不能用的问题
- 解决国内gem不能用的问题
- HQL聚合函数的使用
- HQL中的聚合函数:count()sum()avg()max()min()
- 聚合函数查询、连接查询、子查询
- 插入语句不能用子查询
- delphi 子查询语句不能用
- Texmaker解决快捷键不能用的问题[已解决]
- Texmaker解决快捷键不能用的问题[已解决]
- 解决聚合函数的问题(一)
- hql查询过滤器及相关聚合函数查询详解
- Hibernate HQL的子查询
- jquery.uploadifive 解决上传限制图片或文件大小
- ThreadPoolExecutor可扩展性
- List<Map>去重
- 数据库访问异常:Incorrect result size: expected 1, actual 2 解决方案
- 深度学习Deeplearning4j 入门实战(5):基于多层感知机的Mnist压缩以及在Spark实现
- 解决hql子查询不能用max聚合函数的问题
- 解决overflow:hidden在ie7下无效的问题
- Python 正则表达式入门(初级篇)
- 区赛要来了,居然和月考撞车。
- Android:get/set setting for user asks to run as user -2 but is calling from user 0
- script.net写入txt和读取txt文件示例
- 基于OpenGL ES 的深度学习框架编写
- mybatis常用操作(转)
- WPF 入门三步曲