Hibernate Dao中直接使用sql实现复杂的多表联合查询
2018-02-27 21:33
971 查看
Hibernate Dao中直接使用sql实现复杂的多表联合查询
public List<Object> getAllFiltersJobIDs(Integer days) {
StringBuffer sql = new StringBuffer().append("select DISTINCT a.id as job_id ")
.append(" from JobDaoEntity as a, JobRecordDaoEntity as b")
.append(" where a.id=b.jobId and a.inUseFlag='true'")
.append(" and b.result != 'success' ")
.append(" and b.startTime >= ADDDATE(NOW(),-")
.append(days.toString())
.append(") ");
Query query = getCurrentSession().createQuery(sql.toString()).setResultTransformer(Transformers.TO_LIST);
return query.list();
}
注意:
1.TO_LIST:返回List,除了这个选项外,还有一个ALIAS_TO_ENTITY_MAP,返回MAP。
返回LIST时,Object本身也是一个List,使用时注意,
ret = getAllFilters(1);
for (int i = 0; i < ret.size(); i++) {
(List<Long>)ret.get(i)).get(0)
}
2.from 后面需要写类名称,否则Hibernate中出现表名(XXX) is not mapped的问题。
3. 如果返回的内容有对应的Bean,可以直接映射成Bean,而不用LIST/MAP返回结果:Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);
public List<Object> getAllFiltersJobIDs(Integer days) {
StringBuffer sql = new StringBuffer().append("select DISTINCT a.id as job_id ")
.append(" from JobDaoEntity as a, JobRecordDaoEntity as b")
.append(" where a.id=b.jobId and a.inUseFlag='true'")
.append(" and b.result != 'success' ")
.append(" and b.startTime >= ADDDATE(NOW(),-")
.append(days.toString())
.append(") ");
Query query = getCurrentSession().createQuery(sql.toString()).setResultTransformer(Transformers.TO_LIST);
return query.list();
}
注意:
1.TO_LIST:返回List,除了这个选项外,还有一个ALIAS_TO_ENTITY_MAP,返回MAP。
返回LIST时,Object本身也是一个List,使用时注意,
ret = getAllFilters(1);
for (int i = 0; i < ret.size(); i++) {
(List<Long>)ret.get(i)).get(0)
}
2.from 后面需要写类名称,否则Hibernate中出现表名(XXX) is not mapped的问题。
3. 如果返回的内容有对应的Bean,可以直接映射成Bean,而不用LIST/MAP返回结果:Query query = session.createSQLQuery(sql).addEntity(XXXXXXX.class);
相关文章推荐
- Hibernate3.1.3使用自定义实体类实现对SQL查询语句的映射
- Hibernate使用原生的动态sql实现带条件的查询分页功能
- Hibernate使用sql语句实现多表关联查询
- Hibernate使用sql语句实现多表关联查询
- Hibernate3.2.6 原生sql 查询使用方法,将查询结果直接转换为POJO,不必非要指定属性大写
- Hibernate使用sql语句实现多表关联查询
- Hibernate使用原生SQL适应复杂数据查询
- Hibernate使用原生SQL适应复杂数据查询
- Hibernate使用原生SQL适应复杂数据查询
- DaoImpl中实现查询分页-使用HibernateCallback来做更加方便
- 基于hibernate的基本dao接口与实现 及 sql模糊查询特殊字符处理 及 struts 特殊字符在界面正常回显
- Hibernate学习31 -- Hibernate查询语言(HQL)5 -- 直接使用sql进行查询
- Hibernate中使用SQL处理复杂的查询语句(on calsue)
- Hibernate实现dao自定义sql查询结果
- 简单修改Hibernate源码,增加使用原生SQL查询时动态addEntity和addScalar功能
- 使用HIBERNATE的SQL查询并将结果集自动转换成POJO
- hibernate使用groupProperty,sqlGroupProjection查询,为sqlGroupProjection设置别名,用于排序
- Hibernate使用SQL,查询返回Bean或修改的使用
- 在sql查询中使用表变量实现上一条下一条记录
- Hibernate入门实例——使用原生SQL的查询