请问java高手,hibernate的包含oneTomany的对象查询,怎样来过滤many对象的查询呢?

User.javapublicclassUser{privateIntegerid;privateStringtruename;privateStringphone;pr... User.java
public class User{
private Integer id;
private String truename;
private String phone;
private int sex;
private Integer roomId;
@ManyToOne
private Room room;
// 省略Getter setter方法
}

Room.java
public class Room {
private Integer id;
private String roomName;
@oneTomany
private Set<User> users;
// 省略Getter setter方法

}
比如我想通过Hql查询一个room下面的某些user,并且以room的对象形式返回,
String hql="from Room r left join r.users u where u.name='xx'"
但是返回的结果是,查出的room对象的users还是包含了其他name的user。
请问,这个sql该如何写,可以通过查询Room,返回room对象,并且users只包含指定名称的呢?感激不尽了
展开
 我来答
ldzywxj
2016-09-24 · TA获得超过107个赞
知道小有建树答主
回答量:174
采纳率:100%
帮助的人:60.3万
展开全部
我想说,你的思想本来就有点混乱了。
user是多的一方,room是一的一方。你现在是通过多的一方的条件设置查询一的一方,这个可以这么写啊
hql: from User u where u.name=?
这里通过name参数来查询是唯一的吗,不是唯一的就要进行遍历User对象的List。
然后通过User对象,直接去getRoom()不就可以返回User对应的Room对象了吗
追问
你这种写法一般的理解的是对的,但是有一种需求你的这种写法做不到了。比如,我要在一个页面中显示所有的room,每一行的room下面显示多个user,通过表单查询每个room下面的某个姓氏下面有哪些user,这种就要去返回的list的中的room的users集合只包含指定姓氏的user了,这个需求你能实现吗?
追答
那就查询所有的room对象集合,然后迭代出每一个room对象,再getUsers()获取当前room对象的user列表。然后在程序中,可以根据条件进行过滤出符合条件的user列表。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式