`
pichcar
  • 浏览: 287601 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hibernate

    博客分类:
  • J2EE
阅读更多

今天在做Hibernate+Spring项目的时候遇到一个取数据的问题,需要对一个表自身进行自关联,这个表存在一个父ID需要通过一条语句查出所有记录并且每条记录必须将父名称关联上,这样就涉及到了表自身左外连接查询了,但发现用HQL组织查询的时候是不能跟自己进行左外连接的,后来想办法绕开Hibernate,利用Hibernate提供的原生SQL查询方式:

Query query = session.createSQLQuery(sql),取出满足需求的集合。

final StringBuilder hsql = new StringBuilder();
		hsql.append("select g1.id,g1.menu_name,g2.menu_name as parentName,g1.sortId,g1.createDate,g1.modifyDate from gecmenu g1 left join gecmenu g2 on g1.parentid=g2.id");
		List list = null;
		try {
			list = getHibernateTemplate().executeFind(new HibernateCallback() {
				public Object doInHibernate(Session session)
						throws HibernateException, SQLException {
					Query query = null;
					try {
						//query = session.createQuery(hsql.toString());
						query = session.createSQLQuery(hsql.toString());
					} catch (Throwable ex) {
						ex.printStackTrace();
					}
					return query.list();
				}
			});
		} catch (Exception e) {
			e.printStackTrace();
		}
		return list;

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics