集合中的不再是Order,而是一个Object[]对象数组
2007-11-17 17:16
113 查看
vartixa_bad_mm_flag=true;
vartixa_nadInIframe=false;
vartixa_nadRowCount=1;
vartixa_nadColumnCount=2;
vartixa_nadHeight=90
vartixa_nadWidth=428;
vartixa_nadBorderColor="F5FAFE";
vartixa_nadBgColor="F5FAFE";
vartixa_nadTitleColor="E1771E";
vartixa_nadDescColor="333333";
vartixa_nadUrlColor="000000";
vartixa_nadLineHeight=18;
vartixa_nadFontSize=14;
vartixa_adType="text";
orderbyo.address.streetNumberdesc");//desc为降序
该javaclass不需要是EntityClass。NEW要求javaclass使用全名。
AVG
SUM
COUNT
MAX
MIN
聚合函数也可以作为被查询的一个属性返回。
和SQL一样,如果聚合函数不是select...from的唯一一个返回列,需要使用"GROUPBY"语句。
vartixa_nadInIframe=false;
vartixa_nadRowCount=1;
vartixa_nadColumnCount=2;
vartixa_nadHeight=90
vartixa_nadWidth=428;
vartixa_nadBorderColor="F5FAFE";
vartixa_nadBgColor="F5FAFE";
vartixa_nadTitleColor="E1771E";
vartixa_nadDescColor="333333";
vartixa_nadUrlColor="000000";
vartixa_nadLineHeight=18;
vartixa_nadFontSize=14;
vartixa_adType="text";
orderbyo.address.streetNumberdesc");//desc为降序
finalQueryquery=entityManager.createQuery("selectofromOrderoorderbyo.id,o.address.streetNumber");
查询部分属性
在前面的例子中,都是对针对Entity类的查询,返回的也是被查询的Entity类的实体。EJB3QL也允许我们直接查询返回我们需要的属性,而不是返回整个Entity。在一些Entity中属性特别多的情况,这样的查询可以提高性能。//直接查询我们感兴趣的属性(列)
finalQueryquery=entityManager.createQuery("selecto.id,o.customerName,o.address.streetNumberfromOrderoorderbyo.id");
//集合中的不再是Order,而是一个Object[]对象数组
finalListresult=query.getResultList();
//第一个行
Object[]row=result.get(0);
//数组中的第一个值是id
intid=Integer.parseInt(row[0].toString());
StringcustomerName=row[1].toString();
StringstreetNumber=Integer.parseInt(row[2].toString());
查询中使用构造器(Constructor)
EJB3QL支持将查询的属性结果直接作为一个javaclass的构造器参数,并产生实体作为结果返回。//我们把需要的三个属性作为一个class(OrderHolder)的构造器参数,并使用new函数。
Queryquery=entityManager.createQuery("selectnewcom.redsoft.ejb3.dummy.OrderHolder(o.id,o.vender,o.partNumber)FROMOrderASo");
//集合中的结果是OrderHolder
Listresult=query.getResultList();
该javaclass不需要是EntityClass。NEW要求javaclass使用全名。
聚合查询(Aggregation)
象大部分的SQL一样,EJB3QL也支持查询中的聚合函数。目前EJBQL支持的聚合函数包括:AVG
SUM
COUNT
MAX
MIN
finalQueryquery=entityManager.createQuery("selectMAX(o.id)fromOrderwhereo.customerName='foo'");
//如果我们知道结果是单个,我们可以用getSingleResult()获得结果
finalObjectresult=query.getSingleResult();
//由于Order中id的类型为long,
finalLongmax=(Long)result;
//在一些数据库中max函数返回的结果的类型不一定于id对应的列的类型相符,更安全的方式可以采用string来转型
finalongmax=Long.parseLong(result.toString());
聚合函数也可以作为被查询的一个属性返回。
//返回所有的订单的生产厂商和他们的订单价值总额finalQueryquery
=entityManager.createQuery("selecto.vender,sum(o.amount)FROMOrdero groupbyo.vender");");
和SQL一样,如果聚合函数不是select...from的唯一一个返回列,需要使用"GROUPBY"语句。
相关文章推荐
- 如果一个Object对象可能是集合或者数组那么如何对其进行迭代
- List,Set,Map是否继承自Collection接口? 答:List,Set是,Map不是。 Collection是最基本的集合接口,一个Collection代表一组Object,即Colle
- List<Map<String,Object>>集合根据map里面的一个字段排序
- 解决三星手机post请求时参数包括集合,封装成JSONObject,结果不是数组而是数组的地址问题
- DBUtils 的使用 之 ResultSetHandler的实现 类;ArrayListHandler: 将多条记录封装到一个装有Object[]的List集合中。BeanHandler:(常用)将
- List<Map<String,Object>>集合根据map里面的一个字段排序
- SSH使用QBC查询时无法将查处的集合存入实体集合中,而是返回Object[]
- 实体类集合(List<Object>)根据实体类的一个或者多个属性对集合进行排序-Collections.sort
- List<Map<String,Object>>集合根据map里面的一个字段排序
- object-c集合总计
- 求一个连通图的割点,割点的定义是,如果除去此节点和与其相关的边,图不再连通,描述算法
- 集合objectjava_collection
- 一个超级变态的集合结构的jsp页面解析
- c#中为什么光标不是一条竖线而是一个小方块啊
- 在Salesforce中对某一个Object添加 Validation Rule
- 华为2016笔试题(输入一个字符串,求出该字符串包含的字符集合)
- WC模拟(1.8) T2 送你一个集合
- 又一个有趣的基于SQLite的Object Persistent
- 编程珠玑_第十三章_生成一个随机整数的有序集合
- Java集合学习中需要注意的一个点