用hibernate实现组合查询

xiyuan666 2009-01-16 06:22:12
用hibernate怎么实现像http://bj.ganji.com/fang1/0099.htm页面上的组合查询阿,急
...全文
460 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
GkfSyser 2009-01-16
  • 打赏
  • 举报
回复
可以自己写hql,条件完了and一下不就完了
也可以Criteria
xiyuan666 2009-01-16
  • 打赏
  • 举报
回复
你说的我明白,如果仅仅有一个一对多的关系的话就好说了,可是不仅仅有公交是这种关系,还有别的查询条件呢,我值接从公交里get,那其他条件怎么办,其他的一对多怎么办?
GkfSyser 2009-01-16
  • 打赏
  • 举报
回复
你这样最好弄个中间表,然后互相关联房屋信息表和公交站表,你去看看hibernate关联查询吧
GkfSyser 2009-01-16
  • 打赏
  • 举报
回复
公交站和房屋信息表互相关联,1个房屋信息下面有很多公交站点,这就是一对多关系,然后你在多的一方公交站.get房屋信息
xiyuan666 2009-01-16
  • 打赏
  • 举报
回复
非常感谢,我是用的Criteria查询可是我有个问题,打个比方我有个房屋信息表,有个公交站表,我发布房屋信息的时候可以选择多个公交站,现在我的查询条件里有公交站,我应该怎么才能根据公交站去查到包含这个公交站的房屋信息。我说的稀里糊涂的,望见谅
GkfSyser 2009-01-16
  • 打赏
  • 举报
回复
把视图层提交来的那些房屋信息,封装在一个类里 然后DAO里判断每个条件是否为null 不为null就criteria.add
GkfSyser 2009-01-16
  • 打赏
  • 举报
回复
Criteria查询

Hibernate中的Criteria API提供了另一种查询持久化的方法。它让你能够使用简单的API动态的构建查询,它灵活的特性通常用于搜索条件的数量可变的情况。
Criteria查询之所以灵活是因为它可以借助Java语言,在Java的帮助下它拥有超越HQL的功能。Criteria查询也是Hibernate竭力推荐的一种面向对象的查询方式。
Criteria查询的缺点在于只能检索完整的对象,不支持统计函数,它本身的API也抬高了一定的学习坡度。

Criteria查询示例代码

Session session=HibernateUtil.getSession();

Criteria criteria=session.createCriteria(User.class);
// 条件一:名称以关开头
criteria.add(Restrictions.like("name", "关%"));
// 条件二:email出现在数组中
String[] arr={"1@2.3","2@2.3","3@2.3"};
criteria.add(Restrictions.in("email", arr));
// 条件三:password等于一
criteria.add(Restrictions.eq("password", "1"));
// 排序条件:按登录时间升序
criteria.addOrder(Order.asc("lastLoginTime"));

List<User> users=(List<User>)criteria.list();
System.out.println("返回的User实例数为"+users.size());
for(User user:users){
System.out.println(user);
}
GkfSyser 2009-01-16
  • 打赏
  • 举报
回复
自己拼hql字符串或者用Critera类实现多条件查询

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧