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

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

初学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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航