Sql to Criteria

时间:2015-09-29 07:11:01

标签: sql hibernate postgresql

以下查询正在使用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”在连接表中有一些额外的列。当只使用一个与会者时,所有人都在使用标准,但不是很多。

1 个答案:

答案 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));