EJB3 JPA JPQL 语句 查询 使用 函数 分页 子查询(二)
?
?
计算函数HPQL定义的计算函数包括:ABS?绝对值SQRT?平方根MOD?取余数SIZE?取集合的数量?例://查询所有Order?的订单号及其订单项的数量select o.orderid,?size(o.orderItems) from Order as o group by o.orderid//查询所有Order?的订单号及其总金额/10?的余数select o.orderid,?mod(o.amount, 10) from Order as o??子查询子查询可以用于WHERE?和HAVING?条件语句中例://查询年龄为26?岁的购买者的所有Orderselect o from Order as o where o.ower in(select p from Person as p where p.age =26)??结果集分页有些时候当执行一个查询会返回成千上万条记录,事实上我们只需要显示一部分数据。这时我们需要对结果集进行分页,QueryAPI有两个接口方法可以解决这个问题:setMaxResults( )?和setFirstResult( )。?setMaxResults方法设置获取多少条记录setFirstResult方法设置从结果集中的那个索引开始获取(假如返回的记录有3条,容器会自动为记录编上索引,索引从0开始,依次为0,1,2)?例:public?List getPersonList(int?max,int?whichpage) {try?{int?index = (whichpage-1) * max;Query query =?em.createQuery("from Person p order by personid asc");List list = query.setMaxResults(max).setFirstResult(index).getResultList();em.clear();//分离内存中受EntityManager管理的实体bean,让VM进行垃圾回收return?list;}?catch?(Exception e) {e.printStackTrace();return null;}}
?
?
?
?