现在的位置: 首页 > 综合 > 正文

Hibernate进行多表关联查询

2013年10月01日 ⁄ 综合 ⁄ 共 1019字 ⁄ 字号 评论关闭

Hibernate对多个表进行查询时,查询结果是多个表的笛卡尔积,或者称为“交叉”连接。 例如:from Student,Book from Student as stu,Book as boo from Student stu,Book boo。注意:让查询中的Student和Book均是表student和book对应的类名,它的名字一定要和类的名字相同,包括字母的大小写。

别名应该服从首字母小写的规则是一个好习惯,这和Java对局部变量的命名规范是一致的。

下面列举一个完整的例子来说明Hibernate对多个表进行关联查询(其中粗体是我们要特别注意的地方,相应表tBookInfo和BookSelection的结构和其对应的hbm.xml、class文件就不一一列举了):

String sTest = "from tBookInfo book, BookSelection sel where book.id = sel.bookId";

Collection result = new ArrayList();

Transaction tx = null;

try {

 Session session = HibernateUtil.currentSession();

 tx = session.beginTransaction();

 Query query = session.createQuery(sql);

 result = query.list();

 tx.commit();

} catch (Exception e) {

 throw e;

} finally {

 HibernateUtil.closeSession();

}

ArrayList sList = (ArrayList) result;

Iterator iterator1 = sList.iterator();

while (iterator1.hasNext()) {

 Object[] o = (Object[]) iterator1.next();

 tBookInfo bookInfo = (tBookInfo) o[0];

 BookSelection bookSelect = (BookSelection) o[1];

 System.out.println("BookInfo-Title: " + bookInfo.getTitle());

 System.out.println("BookSelection-BookSelectionId: " + bookSelect.getId());

}  

 

抱歉!评论已关闭.