1、使用HQL进行条件关联(一对一)查询时,其形式类似SQL,示例如下:
条件:用户User 部门Dept (一个用户对应一个部门)
场景:通过部门(ID)查询用户
String hql = "from User u left join fetch u.dept d\n" +
"where d.id = :deptId\n" +
"order by u.createTime desc";
List<User> list = getSession().createQuery(hql).setParameter("deptId", id).list();
注意项就是:left join fetch u.dept d 通过User别名u关联Dept(别名d),并通过 d.id 进行条件查询
【参考】
2、hibernate使用find_in_set函数
String hql = "from User u where find_in_set(:id, u.channelIds) > 0";
List<User> list = getSession().createQuery(hql).setParameter("id", channelId).list();
注意项就是:> 0 不能缺少,本地SQL则不用
备注:find_in_set(val, field)是查询field字段内容中是否含有val值,field字段内容是以","分隔的数据,其他分隔符则不能用该函数查询。
2784

被折叠的 条评论
为什么被折叠?



