Hibernate基于外键的查询方法
来源:互联网 发布:开淘宝店流程图 编辑:程序博客网 时间:2024/06/06 08:55
/**
* 注明:本人所有帖子并非为赚积分,只是供自己作为资料参考,方便以后查询,同是也给需要的人,希望对他们有用
*/
我在解决这个问题的时候搜到了百度上的同样问题: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);
·····
* 注明:本人所有帖子并非为赚积分,只是供自己作为资料参考,方便以后查询,同是也给需要的人,希望对他们有用
*/
我在解决这个问题的时候搜到了百度上的同样问题: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);
·····
- Hibernate基于外键的查询方法
- Hibernate的查询方法
- hibernate的查询方法
- hibernate的查询方法
- hibernate的查询方法总结
- Hibernate 统一的查询方法
- hibernate的一些查询方法
- hibernate基于hql的基本查询
- 基于SqlServer+hibernate的简单分页查询
- Cody_Yu 通用的DAO查询,常见方法集合,基于Oracle&Hibernate&Spring,集合了多种常用方法,方便调用。
- Hibernate查询多个表的数据的方法
- hibernate 基于外键的1-1
- hibernate 查询外键的值
- Hibernate查询方法与缓存的关系
- Hibernate查询方法与缓存的关系
- Hibernate查询方法与缓存的关系
- Hibernate查询方法与缓存的关系
- Hibernate中各种查询方法的总结
- Java编程那些事儿10——Java语言简介
- js高亮关键词系列方法
- Java编程那些事儿11——JDK的获得、安装和配
- 一种弹出提示信息时页面背景色调改变的方法
- Java编程那些事儿12——第一个HelloWorld程序
- Hibernate基于外键的查询方法
- How to access a Window XP Remote Destop in a ipv6 network
- Hibernate 外键关联与 HQL 语法
- 各种 lightbox 实现效果介绍
- linux下安装配置连接PostgreSQL
- Java编程那些事儿13——Eclipse基本使用
- css实现简单圆角效果
- Java编程那些事儿14——Eclipse基础使用进阶
- 谋划(16)