JPQL
支持将查询的属性结果直接作为一个
java class
的构造器参数,并产生实体作为结果返回
。例如上面的例子只获取 person entity bean的name and personid属性,我们不希望返回的集合的元素是object[],而希望用一个类来包装它。就要用到使用构造器 。
例:
public class
SimplePerson {
private Integer personid;
private
String
name
;
。。。。
public
SimplePerson() {
}
public
SimplePerson(Integer personid, String name) {
this
.
name
= name;
this
. personid = personid;
}
}
查询代码为:
//
我们把需要的两个属性作为
SimplePerson
的构造器参数,并使用
new
函数。
Query query = em.createQuery("
select new com.foshanshop.ejb3.bean.SimplePerson(p. personid, p.name) from Person p order by p.personid desc
");
//
集合中的元素是
SimplePerson
对象
List result = query.getResultList();
if (result!=null){
Iterator iterator = result.iterator();
while( iterator.hasNext() ){
SimplePerson simpleperson = (SimplePerson) iterator.next();
。。。。
}
}