以下查询正在使用sql:
SELECT
aa.activity_id, a.title
FROM
activity as a, activity_attendee as aa, activity_attendee as ab
WHERE
aa.attendee_id = 50
and
a.id = aa.activity_id
and
ab.attendee_id = 1
and
a.id = ab.activity_id
应该/返回所有参与者都设置(AND)的活动。
我尝试过以下标准:
.createAlias("activityAttendee", "attendee")
.add(Restrictions.and(Restrictions.conjunction()
.add(Restrictions.in("attendee.pk.attendee.id", values))));
它返回一个空列表,而不是我用裸SQL获得的。
显然,我有以下表格“ACTIVITY”,“ACTIVITY_ATTENDEE”和“ATTENDEE”。 All用作多对多但表“ACTIVITY_ATTENDEE”在连接表中有一些额外的列。当只使用一个与会者时,所有人都在使用标准,但不是很多。
答案 0 :(得分:0)
尝试这样的事情:
.createAlias("activityAttendee", "aa")
.add(Restrictions.in("aa.pk.attendee.id", values))
.createAlias("activityAttendee", "ab")
.add(Restrictions.in("ab.pk.attendee.id", values));
正如你在SQL中所做的那样:
.createAlias("activityAttendee", "aa")
.add(Restrictions.eq("aa.pk.attendee.id", 50))
.createAlias("activityAttendee", "ab")
.add(Restrictions.eq("ab.pk.attendee.id", 1));