【发布时间】:2013-05-07 09:22:01
【问题描述】:
在我的应用程序中,我有两个实体类User,Activity。
活动类是:
public class Activity{
private Set<User> users;
private Set<User> activityManagers;
}
而用户类是:
public class User{
private String userName;
}
现在我想在属性users 或managers 或两者中使用Hibernate Criteria 检索所有User 和username 设置为某个值的Activities。
我试过这个:
Criteria criteria = getSessionFactory().getCurrentSession().createCriteria(Activity.class, "act");
criteria.createAlias("act.activityManagers", "manager");
criteria.createAlias("act.users", "user");
criteria.add(Restrictions.disjunction().add(Restrictions.eq("manager.username", userName)).add(Restrictions.eq("user.username", userName)));
criteria.setResultTransformer(DistinctRootEntityResultTransformer.INSTANCE);
它不能正常工作。我不知道哪里做错了。谁能帮我?谢谢
更新-1
假设我有 5 个Activitys
First Activity:users[aaa,bbb,cccc],managers[ddddd].
Second Activity:users[userName,dddd],managers[userName,xxx,gggg].
Third Activity:users[userName,vvvvv,bbbb],managers[sss,cccc,tttt].
Fourth Activity:users[aaa,ffff,jjjj],managers[userName,uuuu,iiiii].
Fifth Activity:users[dddd,ffff],managers[jjjjj,iiii].
结果必须是 Second,Third,Fourth Activity。但我只得到了三次活动。
【问题讨论】:
-
怎么不工作了?
-
它没有给出预期的答案@Thihara。
-
@Diganta 输入是什么,预期输出是什么,实际输出是什么?帮助我们帮助您。
-
您期望什么以及您得到的输出是什么?
-
在我的应用程序中,我有 2 个
Activitys 的managers等于userName字符串,还有一个users等于userName字符串。我应该获得 3 行,但我得到的一行,Activity包含managers的用户名等于用户名。 @Thihara
标签: java hibernate hibernate-criteria