Hibernate 中应用原生SQL语句查询

Hibernate 中应用原生SQL语句查询

 

在公司实习做项目的时候遇到的小问题,用到左连接查询,由于数据库没有设置外键关联,所以不能用HQL的左连接查询,必须得用原生SQL语句。

代码如下:

Session session = this.getSession();

String sql = "select a.*,b.* from hp_xmsbcl as a left join hp_ybxx as b on a.xmbh=b.xmbh where a.xmlb='zd'";

if (startDate != null && !startDate.equals(""))

sql = sql + " and (b.yf>='" + startDate

+ "'  or b.yf is null or b.yf='')";

if (endDate != null && !endDate.equals(""))

sql = sql + " and (b.yf<'" + endDate

+ "' or b.yf is null or b.yf='')";

return session.createSQLQuery(sql).addEntity("a", HpXmsbcl.class)

.addEntity("b", HpYbxx.class).setFirstResult(start)

.setMaxResults(limit).list();

 

其中用到了addEntity方法,可以让我们返回实体,上例中返回两个实体,我们可以在业务层用以下方法来转换使用:

for (int i = 0; i < dataList.size(); i++) {

 

Object[] obj = (Object[]) dataList.get(i);

HpXmsbcl xmcl = (HpXmsbcl) obj[0];

HpYbxx yb = (HpYbxx) obj[1];

}

posted @ 2012-03-31 16:08  rason2008  阅读(1915)  评论(0编辑  收藏  举报