在Hibernate执行一对多表查询的HQL语句,怎样循环打印出结果

原创 2004年10月29日 15:21:00

初学hibernate ,花了点时间写了个一对一关系的两个表,遇到了无法显示查询内容的小问题,四处找文档没找到,现已经解决,结果如下:
调用程序如下:
import java.util.Iterator;
public class Client {
  public Client() {
  }
  public static void main(String[] args){
   BlogMain blogMain=new BlogMain();
   try{
    blogMain.exportTables();   
    blogMain.configure();
    Blog blog = blogMain.createBlog("test");
     blogMain.createBlogItem(blog,"test1","string1");
     blogMain.createBlogItem(blog,"test2","string2");
     blogMain.createBlogItem(blog,"test3","string3");
     List list=blogMain.listBlogsAndRecentItems();
     Iterator it=list.iterator();
     while (it.hasNext()){
        Object[] Row = (Object[])it.next();
        Blog blogtest=(Blog)Row[0];
        BlogItem blogItem=(BlogItem)Row[1];
        System.out.println(blogtest.getId()+":"+blogItem.getId()+":"+blogItem.getText());
     }
   
   }
   catch(HibernateException ex){
       throw new RuntimeException("Exception building SessionFactory: " + ex.getMessage(), ex);
    }
  }
}
其中    blogMain.listBlogsAndRecentItems();代码如下
  public List listBlogsAndRecentItems() throws HibernateException {

        Session session = _sessions.openSession();
        Transaction tx = null;
        List result = null;
        try {
            tx = session.beginTransaction();
            Query q = session.createQuery(
                "from Blog as blog " +
                "inner join blog.items as blogItem " +
                "where blogItem.datetime > :minDate"
            );

            Calendar cal = Calendar.getInstance();
            cal.roll(Calendar.MONTH, false);
            q.setCalendar("minDate", cal);

            result = q.list();
            tx.commit();
        }
        catch (HibernateException he) {
            if (tx!=null) tx.rollback();
            throw he;
        }
        finally {
            session.close();
        }
        return result;
    }
查询显示结果如下:
1:2:string1

1:3:string2

1:4:string3

hibernate系列十五:hql连接查询,查询性能优化,hql批量增删改

一 hql连接查询 和SQL查询一样,HQL也支持各种各样的连接查询,如内连接、外连接。我们知道在SQL中可通过join子句实现多表之间的连接查询。HQL同样提供了连接查询机制,还允许显式指定迫切内...
  • wx5040257
  • wx5040257
  • 2017年12月01日 17:07
  • 168

HQL执行的三种方式

HQL脚本三种执行方式1> hive -e 'hql'2> hive -f 'hql.file'3> hive jdbc代码执行脚本 Hive jdbc代码执行脚本1、导入hive安装文件lib目录下...
  • qq_25371579
  • qq_25371579
  • 2016年03月13日 13:19
  • 1897

Hibernate的HQL,QBC 查询语言(包括多表联合查询join)

引用链接:http://takeme.iteye.com/blog/1722522   参考链接: in和not in用法:http://blog.csdn.net/shiqidide/art...
  • xn_28
  • xn_28
  • 2017年04月24日 03:26
  • 2669

Hibernate中的HQL的基本常用小例子,单表查询与多表查询

Hibernate中的HQL的基本常用小例子,单表查询与多表查询 本文章实现HQL的以下功能: /** * hql语法: * 1)单表查询 * 1.1 全表查询 * 1...
  • starjuly
  • starjuly
  • 2016年08月26日 00:26
  • 6529

【Hibernate九】HQL之多表查询(一对多和多对多)

一、一对多 以班级Classes和学生Student为例: 回忆sql语句: //内链接,两种方式效果一样,查询的是两边都有的数据 SELECT c.*,s.* FROM cl...
  • damogu_arthur
  • damogu_arthur
  • 2015年07月17日 11:18
  • 25600

Hibernate中关于多表连接查询hql 和 sql 返回值集合中对象问题

昨晚帮同事看代码到凌晨2点多,今早6点醒来发现他发来信息说报空指针错误,实在无法入睡,起来自己测试了一下,控制台还真的报: 2009-4-25 8:12:34 org.apache.catali...
  • Stonejone
  • Stonejone
  • 2013年10月05日 22:03
  • 34037

hibernate hql 查询指定字段并获取结果集,多表查询结果集

原文转自:http://blog.csdn.net/ljfbest/article/details/7472042  在hibernate中,用hql语句查询实体类,采用list方法的返回结果为...
  • leandzgc
  • leandzgc
  • 2014年03月13日 21:31
  • 7952

hibernate 直接执行hql语句的代码写法

用Hibernate直接执行hql语句,不直接操纵对象   例子一:public int executeSQL(String sql, Map params) { SQLQuery sql...
  • digyso888
  • digyso888
  • 2009年04月27日 13:57
  • 12274

hibernate中用hql怎么执行delete的sql语句

public void testDml(){ Session session = null; Transaction tx = null; try { session = H...
  • a137268431
  • a137268431
  • 2013年12月10日 23:01
  • 10227

【Hibernate】Hibernate多表查询后,将查询结果转化为实体

在《【Hibernate】Hibernate的多表查询》(点击打开链接)一文中,已经介绍过,如果利用HQL语句进行多表查询,摆脱查完一张表又取其中的结果再查另一张表的问题。然而,利用HQL语句查询出来...
  • yongh701
  • yongh701
  • 2015年11月16日 16:18
  • 3726
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Hibernate执行一对多表查询的HQL语句,怎样循环打印出结果
举报原因:
原因补充:

(最多只允许输入30个字)