日期:2014-05-17  浏览次数:20748 次

关于一个简单的3张表hql语句查询,其中一个条件需要满足相同等级几个条件
本帖最后由 secondfirstlife 于 2014-04-16 17:47:08 编辑
情况是这样的,现在有三张表 Hotel [id] [酒店表]
HotelAndHotelService [id,hotel_id,hotelService_id][酒店_酒店服务表]
hotelService[id][酒店服务表]
现在需求是这样的

酒店有这样一排服务,服务都是保存在酒店服务关系表里边的,当我选择1个或一个以上的酒店服务的时候,要能正确的查出正确的酒店,现在我传入的参数是酒店服务的id字符串[字符串格式是这样:1,2,3,55,22,33],我用过 了in,是不行的,求大神指导
------解决方案--------------------
hotel和service是多对多的关系。
你的HotelAndHotelService的实体中有没有定义两个ManyToOne?
不能用in的话你这样:
1.在你的Action遍历你的ID数组,没遍历一个id,然后用下面这个hql查一下:
select hs.hotel from HotelAndHotelService hs where hs.hotelService.hotelServiceId =?;
如果查到了就在循环里add到一个集合中。
就这样。
------解决方案--------------------
引用:
我晕了,上面的方法怕行不通,我这个东西还有分页呢,一个一个的查这不累死人么,分页的时候麻烦不就大了

你们的分页没有封装?那就不好办了。。我们都是封装好的。。项目如果还要考虑分页SQL那不把人写死了。。
------解决方案--------------------
select hotel from HotelAndHotelService where hotelService.id in (1,2,3,...);为什么不行? 
------解决方案--------------------
自己写sql 呢。