Hibernate的order by遇到null致数据丢失的问题
来源:互联网 发布:mac如何剪辑音频文件 编辑:程序博客网 时间:2024/05/17 07:44
Hibernate中可能用到两张(或更多)表映射称为复杂一点的对象的情形,例如每个User(用户)对象关联一个LoginInfo(登录信息)对象,LoginInfo还包括各种属性,例如LastLoginTime。
现在查询所有用户,hql为:
from User u如果按"User.LoginInfo.LastLoginTime"逆序排列,hql为:
from User u order by u.loginInfo.lastLoginTime desc
通常而言,两种方式,只是排序不同,结果数量是相同的。
但如果“user.loginInfo”为null了,使用有排序的hql,凡是user.loginInfo为null的数据都会被过滤掉无法查询到。解决办法就是使用left join左连接LoginInfo。改造后的hql如下:
from User u left join u.loginInfo order by u.loginInfo.lastLoginTime desc如果是用的org.hibernate.Criteria来进行查询,则排序时应调用三参数的createCriteria(String, String, int)方法,用CriteriaSpecification.LEFT_JOIN作为第三个参数值:
criteria.createCriteria("loginInfo", "login").addOrder(Order.asc("login.lastLoginTime"))
0 0
- Hibernate的order by遇到null致数据丢失的问题
- 各种数据库产品数据按某字段Order by时null的位置问题
- 各种数据库产品数据按某字段Order by时null的位置问题
- MySQL limit与order by遇到的有趣问题
- hibernate莫名其妙的数据丢失问题
- row_number () over(partition by order by) 在 impala 和 hive 中的对NULL排序的问题
- 数据的排序:(order by)
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- 从Yii框架分页数据“丢失”到MySQL的ORDER BY和LIMIT子句
- mysql同时使用order by和limit查询时的一个严重隐患 -- 丢失数据
- Sql Server,Oracle 排序order by 数据有null的情况
- hibernate 带order by 的 分页
- sql left join order by 排序遇到null值排序混乱问题
- order by 语句对null字段的默认排序
- order by 语句对null字段的默认排序
- sql2005 where is not null 后面的 order by 无效
- order by 语句对null字段的默认排序
- order by 语句对null字段的默认排序
- [Learn Android Studio 汉化教程]使用 Android Studio 编程
- 递归求幂的复杂度
- 友盟第三方登录签名后无响应
- 后缀数组学习ing
- NYOJ 17 单调递增最长子序列
- Hibernate的order by遇到null致数据丢失的问题
- pfn_valid 源码分析
- OJ------在字符串中找出连续最长的数字串
- Bone Collector hd 2602
- leetcode(316):Remove Duplicate Letters
- hdu3440 House Man(差分约束)
- 根据当前浏览器ip获取地理信息,包含省市区街道
- Android学习之路
- PHP安全编程之不要暴露数据库访问权限