在使用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关联查询不明白的可以看看,保证马上学会,注释,数据库都有,很简单易学的源码,谢谢下载!
hibernat一对多关联查询。。。。。。。。。。。。。。
hibernate多表联合查询实例,很经典的查询语句和总结.
Hibernate中的关联查询实际上生成的是数据库表连接查询的SQL语句
hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,hibernate,包含4个说明文档,分别详细解说了hibernate关联映射的...
关于hibernate的关联操作 分享下
Hibernate中的查询方法若HQL,详细讲解HQL与使用的具体例子
Hibernate 一对一外键单向关联 Hibernate 一对一主键单向关联 Hibernate 一对一连接表单向关联 Hibernate 一对多外键单向关联 Hibernate 一对多连接表单向关联 Hibernate 多对一外键单向关联 Hibernate 多对一连接...
Hibernate关联关系练习【全】
该资源包含了一些常用的hibernate关联映射实例。包括一对多,多对多,继承映射,等,是学习hibernate的必备品
hibernate关联关系
Hibernate联合主键,MyEclipse的例子
Hibernate 多表连接分页查询示范项目 Hibernate Criteria 多表连接 分页
hibernate中用到联合主键的看看就会了很棒的资料
Hibernate多对多关联添加及查询示例
映射一对多关联关系 以Customer和Order为例: 一对多: 每个Customer可以有一个或者多个Order,因此Customer中应该有一个集合类型的属性,来引用所有关联的Order对象。 多对一。全实例讲解
Hibernate 关联关系映射分类
详细讲解hibernate的关联关系,以及用实例讲解,非常详细
3.关联属性列表展现(近期完成) 4.动态列表生成功能,用户通过界面自行配置想要输出的列表(构思中) 5.动态统计,用户通过界面自行配置想要的统计(构思中) Awake 在Ajax应用上存在的小瑕疵请大虾们帮忙解决:...
关于对Hibernate关联映射的一个总结,其中有各种映射的例子,详细用法 等