您的位置:首页 > 数据库

hibernate使用原生的sql,解决管理查询、结果集封装等问题

2017-09-21 12:52 591 查看
前提:hibernate的
public List<Aorder> findByExample(Aorder instance){xxxx}
方法,是不支持管理查询的。只能写sql自己查。

@Entity
@Table(name = "aorder", catalog = "console")
public class Aorder implements java.io.Serializable {

// Fields

private Integer oid;
private Auser auser;//hibernate反向工程,多对一;结果在多的一方生成了一的实体auser,在一的一方生成了多的一方的集合List<aorder>;
private Integer version;
private Timestamp creation;
private Timestamp lastModified;
private String name;
private String type;
private Boolean removed;
private Double totalBudget;
private String contractNo;
private String convertPoint;
private String kpiType1;
private Double price1;
private String kpiType2;

1、封装实体bean

public class NativeSQLBean {

private Aideas aidea;
private Aorder aorder;
private Areasreport areasreport;
private Auser auser;
private Hoursreport hoursreport;
private PlanStrategy planStrategy;
public Aideas getAidea() {
return aidea;
}
public void setAidea(Aideas aidea) {
this.aidea = aidea;
}//get set方法,此处省略

2、aorderDao,dao层的查询方法

//根据uid查询
public List<Aorder> findByModel(Integer uid){
try {
List<Aorder> aolist=new ArrayList<Aorder>();
String hql="select o.*,a.* from aorder o left join auser a on a.uid=o.uid where o.uid= "+uid;
Query query=this.getSession().createSQLQuery(hql).addEntity(Aorder.class).addEntity(Auser.class);
query.setResultTransformer(Transformers.aliasToBean(NativeSQLBean.class));
List<NativeSQLBean> results= (List<NativeSQLBean>) query.list();
for (NativeSQLBean nativeSQLBean : results) {
Aorder a=nativeSQLBean.getAorder();
aolist.add(a);
}
return aolist;
} catch (HibernateException e) {
throw e;
}
}
  解释:查询的结果是Object数组。(Transformers.aliasToBean(NativeSQLBean.class),这个方法可以转化list《object》 和map《string(实际是类名),object》、封装实体bean三种。
debug显示的数据结构,可以看到,管理查询的结果全部封装到了写好的实体bean中了。



List<Aorder> aolist=new ArrayList<Aorde
4000
r>();
for (NativeSQLBean nativeSQLBean : results) {Aorder a=nativeSQLBean.getAorder();aolist.add(a);}

再遍历,拿到你想要的就行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐