在使用hibernatetemplate的时候,经常会用到关联查询。在分页中,我们一般这么写
public List<ShareArticle> getByUserid(final String userid,final int start,final int length) {
List<ShareArticle> list = null;
try {
list = hibernateTemplate.executeFind(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
//这里关联时,要把关联的主键列出来,即ShareArticle关联的UserInfo的主键id
Query query = session
.createQuery(" from ShareArticle sa where sa.userInfo.id = '"
+ userid + "'");
query.setFirstResult(start);
query.setMaxResults(length);
List list = query.list();
return list;
}
});
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
以上是分布的,而在正常情况下,我们是不用把主键名列出来,只而是直接和关联的对象做比较,hibernate会自动的使用它们的主键进行比较
public List<UserFriend> getByUserid(UserInfo userInfo,int type,int group) {
//这里直接用UserFriend的关联对象UserInfo进行比较,不用把主键列出来
String sql = "from UserFriend where userInfo=? ";
List<Object> objectList = new ArrayList<Object>();
objectList.add(userInfo);
if(type != 0){
sql += "and type=? ";
objectList.add(type);
}
if(group != 0){
sql += "and groupid=? ";
objectList.add(group);
}
Object[] o = objectList.toArray();
return hibernateTemplate.find(sql,o);
}
我不大清楚为什么要设计成这样,因为在分页和不分页我们做业务层的时候就要考虑两种情况。如果只需要主键,那么我们直接操作一个主键就可以了。但如果是第二种,那我们还要从数据库中把该对象查出来,然后再查询,这样相当于多做了一步操作。我觉得很不好。
当然,如果使用第二种情况,可以创建一个空对象,只要把主键设对,再比较也可以,不过感觉这种方法很不规范。
分享到:
相关推荐
hibernate关联查询 实例源码 java web 如果不明白hibernate关联查询不明白的可以看看,保证马上学会,注释,数据库都有,很简单易学的源码,谢谢下载!
**hibernate关联查询详解** Hibernate,作为Java领域中的一款流行的ORM(对象关系映射)框架,极大地简化了数据库操作,使得开发者可以使用面向对象的方式来处理数据库事务。在实际项目中,我们经常需要处理对象...
### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。Hibernate作为一款流行的Java持久层框架,提供了一种非常便捷的方式来处理...
### Hibernate HQL 关联查询详解 #### 一、引言 在进行数据库操作时,关联查询是必不可少的一部分,尤其在处理复杂的数据结构时更是如此。Hibernate作为一种流行的Java持久层框架,提供了强大的对象关系映射(ORM...
根据提供的文件信息,我们可以深入探讨Hibernate中的连表查询方法及其应用。下面将详细介绍与标题、描述及部分代码相关的几个核心知识点: ### Hibernate 连表查询基础 Hibernate 是一个开源的对象关系映射(ORM)...
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
总之,Hibernate关联关系是理解其工作原理的关键,它使得Java对象和数据库记录之间的映射变得简单。通过练习,你可以掌握如何配置和使用这些关系,以及如何进行相关的查询操作,从而提升你的开发效率和代码质量。...
关于hibernate的关联操作 分享下
Hibernate中的查询方法若HQL,详细讲解HQL与使用的具体例子
总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...
本文将深入探讨“hibernate关联映射实例”中的关键知识点,包括一对多、多对多和继承映射,这些都是Hibernate中至关重要的概念。 1. **一对多关联映射**: 在现实世界中,一个实体可能会与多个其他实体相关联,...
在使用Hibernate进行数据查询时,有时会遇到需要使用子查询的情况。然而,正如你所描述的,Hibernate的HQL(Hibernate Query Language)并不直接支持在`FROM`子句后跟一个子查询,这与标准的SQL语法有所差异。在HQL...
本文将深入探讨在使用Hibernate进行MySQL查询时的一些关键知识点,以帮助开发者更好地理解和应用这些技术。 首先,我们需要理解Hibernate的核心概念。Hibernate通过提供一个中间层,将Java对象与数据库表进行映射,...
“Hibernate 级联查询”是指在使用Hibernate这个Java持久化框架时,如何处理对象之间的关联查询。Hibernate提供了级联操作来简化数据的保存、更新和删除等操作,使得开发者无需手动编写复杂的SQL语句,就能实现关联...
在查询数据库时,递归查询意味着我们查询一个记录,然后根据该记录的某些属性再查询其关联的记录,这个过程可能反复进行,直到满足某个终止条件。 在Hibernate中,我们可以利用HQL(Hibernate Query Language)或 ...
当我们需要进行更复杂的数据库查询时,Hibernate提供了丰富的高级查询功能,这正是“Hibernate的高级查询”这一主题的核心所在。 在Hibernate中,高级查询主要包括HQL(Hibernate Query Language)、Criteria API和...
在探讨Hibernate中联合主键的使用时,我们首先需要理解什么是联合主键以及它在Hibernate框架中的实现方式。联合主键(Composite Primary Key),是指在数据库表中使用两个或多个字段共同作为主键来唯一标识每一行...
这里的`createCriteria`方法用于定义查询的目标类,`"u"`是别名,便于后续的关联操作。`createCriteria("orders")`表示我们要查询User类中的orders属性,然后使用`add`方法添加限制条件,`Restrictions.in("id", ...
4. **关联子查询**:子查询可以与主查询的关联一起使用,用于更复杂的条件判断。 **原生SQL查询** 虽然Hibernate提供了ORM的方式,但有时我们可能需要使用原生的SQL查询来访问数据库,尤其是当ORM无法满足复杂需求...