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];
}