hql 查询 合并查询根据不同条件的结果 并排序

 1 public List<?> getUntakedOrderList(Long userId, List statusList) {
 2         Session currentSession = this.getSessionFactory().getCurrentSession();
 3         String hql = "select orderInfo.orderStatus as orderStatus, orderInfo.orderTime as orderTime, areaRelationStart.areaCityName as startCityName, areaRelationStart.areaName as startAreaName, areaRelationEnd.areaCityName as endCityName, " +
 4                 "areaRelationEnd.areaName as endAreaName,userAddressStart.addressLocation as startAddress,userAddressEnd.addressLocation as endAddress,orderInfo.orderId as orderId," +
 5                 "userAddressEnd.addressName as addressName,orderInfo.orderCommonNo as orderCommonNo " +
 6                 "from OrderInfo as orderInfo left outer join OrderInfoAppend as orderInfoAppend on orderInfo.orderId=orderInfoAppend.appendOrderId " +
 7                 "left join UserAddress as userAddressStart on orderInfo.orderSendAddId=userAddressStart.addressId " +
 8                 "left join UserAddress as userAddressEnd on orderInfo.orderReceiveAddId=userAddressEnd.addressId " +
 9                 "left join AreaRelation as areaRelationStart on areaRelationStart.areaCode=userAddressStart.addressCity " +
10                 "left join AreaRelation as areaRelationEnd on areaRelationEnd.areaCode=userAddressEnd.addressCity" +
11                 " where (orderInfoAppend.appendOrderId = null and orderInfo.orderUserId=(:userId) and orderInfo.orderStatus in (:statusList) " +
12                 "and orderInfo.orderDeleted=false) or (orderInfo.orderUserId=(:userId) and orderInfo.orderStatus=(:orderStatus) and orderInfo.orderDeleted=false) order by orderInfo.orderTime desc ";
13         Query query = currentSession.createQuery(hql)
14                 .setParameter("userId", userId)
15                 .setParameterList("statusList", statusList)
16                 .setParameter("orderStatus", 290)
17                 .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
18         return query.list();
19     }

1.红色部分为第一部分的条件,蓝色部分为第二部分的条件

时间: 2024-11-06 05:42:35

hql 查询 合并查询根据不同条件的结果 并排序的相关文章

Hibernate的几种查询方式-HQL,QBC,QBE,离线查询,复合查询,分页查询

HQL查询方式 这一种我最常用,也是最喜欢用的,因为它写起来灵活直观,而且与所熟悉的SQL的语法差不太多.条件查询.分页查询.连接查询.嵌套查询,写起来与SQL语法基本一致,唯一不同的就是把表名换成了类或者对象.其它的,包括一些查询函数(count(),sum()等).查询条件的设定等,全都跟SQL语法一样. 示例: Session session = SessionFactory.getCurrentSession(); User user = null; Transaction ts = s

HQL和SQL查询

转自http://blog.csdn.net/aaa1117a8w5s6d/article/details/7757097 HQL和SQL的区别 标签: sqlhibernatejavasessionuser数据库 2012-07-17 22:03 11614人阅读 评论(0) 收藏 举报 目录(?)[+] hql是面向对象查询,格式:from + 类名 + 类对象 + where + 对象的属性 sql是面向数据库表查询,格式:from + 表名 + where + 表中字段 1.查询 一般在

HQL多表查询 ---- Hibernate之查询语句

叙:上一章节轻风记录的是HQL的单表查询,本章节就HQL的多表查询方式进行记录: HQL查询数据 本章节主要学习的是HQL查询方式的表查询: 几种查询方式 1. 内连查询 查询语句比较奇怪,from Customer c inner join c.linkMens,查询Customer类所映射的表和Customer类中linkMens属性所代表的实体类的映射的数据库表:这句话很拗口,但是多读两遍理解理解就好了,重点理解的是linkMens是Customer类中的属性,linkMens是LinkM

HQL多表查询

------------------siwuxie095 HQL 多表查询 以客户和联系人为例(一对多) 1.内连接 (1)hql 语句写法 from Customer c inner join c.linkManSet (2)具体实现 /* * (1) 创建 Query 对象 * * 调用 session 的 createQuery() 方法,参数是 hql * 语句,返回值是 Query 类型,创建以接收 */ Query query=session.createQuery("from Cu

ORACLE因为字符集不同,进行中文条件查询,查询结果为空

在使用C#进行SQL语言或者ASP.NET进行ORACLE数据查询:当查询条件有中文存在时,因为数据服务端和客户端/本机的字符集不同,数据表存在数据,但查询不出来数据.但使用连接Oracle工具相同的字符串可进行数据查询.查询条件中文以'???'出现. SELECT sql_text, last_load_time FROM v$sql WHERE last_load_time IS NOT NULL ORDER BY last_load_time DESC该语句是进行ORACLE执行SQL语句

Hibernate的HQL多表查询

HQL的内连接查询 对于HQL内链接查询,查询的是两张表的数据,这两张表的数据首先是保存在数组之中,然后在将每一个数组保存在List集合之中进行返回 代码片段: 1 @Test 2 // 内连接 3 public void fun1() { 4 SessionFactory factory = null; 5 Session session = null; 6 Transaction tx = null; 7 try { 8 factory = Tools.getSessionFactory()

hibernate条件查询 Criteria查询

criteria查询 的方法详解 1.获取 criteria对象 Criteria criteria = this.getSession().createCriteria(Record.class); 红色部分为实体类,此处的Record代表信息记录类 2.追加条件 criteria = criteria.add(Expression.eq("level", 1)); 红色部分 Expression.eq("",""),两个参数第一个是 实体类中

gridview 绑定多个格式相同的数据源(数据查询合并)

在做项目时,要求在同一个GridView中同时显示不同分组中的前若干条数据 几个技术要点: 1.数据分组,本方法中未用group by 2.几个结果格式相同的查询合并绑定 3.取查询结果的前或后若干条数据 public int BindLiftData() { int count = 0; using (MySqlConnection conn = new MySqlConnection(dbServer)) { FrDData db = new FrDData(conn); List<int>

Hibernate Criteria条件Restrictions.or查询 循环多个or条件

Hibernate 条件or查询 循环多个or条件 今天公司让我做一个列表查询页面,因为还是对于hibernate的不熟悉刚出来经验不足,代码敲得少,所有导致了种种困难…页面左边有个多级菜单栏,因为种种需求需要我用到SQL查询条件里面的or(或者),但因为用的是hibernate所以我苦苦在网上搜寻,得到了如下代码: 1 Criteria criteria = this.createCriteria(); 2 criteria.add(Restrictions.or(Restrictions.e