在我的应用程序中,我有两个实体User
类Activity
.
活动类是:
public class Activity{
private Set<User> users;
private Set<User> activityManagers;
}
和类用户是:
public class User{
private String userName;
}
现在我想使用 Hibernate Criteria 进行检索,所有这些条件都设置为Activities
某个值,在属性中或两者兼而有之。我试过这个:User
username
users
managers
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);
它不能正常工作。我做错了什么我不知道。谁能帮我?谢谢
UPDATE-1 假设我有 5Activity
秒
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].
结果必须是第二、第三、第四个活动。但我只得到了三重活动。