快速业务通道

Hibernate基于外键的查询方法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16

Hibernate基于外键的查询方法

时间:2011-07-28

我在解决这个问题的时候搜到了百度上的同样问题:hibernate中表怎么根据外键查询 ??

它的设计为:我有两张表:Teacher id(主键) name Student id(主键) name tid(外键对应Teacher的id)

public List findStudentByTeacher(Teacher teacher) { try { session = this.openSession(); String HQL = "select s.name from Student as s where s.tid ="+teacher.getId(); query = session.createQuery(HQL); return query.list(); } catch (Exception e) { e.printStackTrace(); logs.error("查询学生时候出现错误!"); return null; }finally{ this.closeSession(session); } }

最优答案为:改为:String HQL = "select s.name from Student as s where s.teacher.id ="+teacher.getId();

本人采用的是MyEclipse中自动生成的代码:

  Comment表: id int primary key, ... bk_id int not null, FOREIGN KEY(BK_Id) REFERENCES book(BK_Id)

应该注意,Hibernate是基于对象的实现,所以Comment表对应的映射中没有bk_id,而是变为book对象。下面是是基于外键的查找方法:

数据访问层(DAO类):

  public List findByProperty(String propertyName, Object value) { log.debug("finding Reply instance with property: " + propertyName + ", value: " + value); try { String queryString = "from Reply as model where model." + propertyName + "= ?"; Query queryObject = getSession().createQuery(queryString); queryObject.setParameter(0, value); return queryObject.list(); } catch (RuntimeException re) { log.error("find by property name failed", re); throw re; } } //根据外键book来查找对应的评论 public List findCommentByBook(Object book) { return findByProperty("book", book); }

业务逻辑层:

Book book = new Book(); book.setBkId(bookId); //只要set 主键创建一个book对象就可以了,因为hibernate虽然对应是基于book对象的查找,但是实际上也只动用到bookId这个属性,其它属性对这不起作用(我理解,欢迎更正) List<Comment> list = dao.findByBook(book); ·····

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号