JPA查询 - 将匹配的id添加到列表中

时间:2016-03-18 18:45:29

标签: java querydsl

如何从此查询中检索匹配的ID并将其添加到查询底部的列表中?目前我得到一个包含结果的列表,但我不知道它们匹配的参数中有什么ID。

在代码中查看评论。

P.S。这不是完整的查询,我把它缩小了,因此更容易阅读。

@Override
public List<EventDTO> getTotalEventByFilter(List<Long> idList){
    QActivity subActivity = new QActivity("subActivity");
    QUser subUser = new QUser("subUser");
    QAttendancelist subAttendancelist = new QAttendancelist("subAttendancelist");

    ListSubQuery<Long> allUserAtEvent = new JPASubQuery().from(qUser)
        .innerJoin(qUser.attendancelist, qAttendancelist)
        .innerJoin(qAttendancelist.activity, qActivity)
        .where(qActivity.id.in(idList)) //<--- I need to know with what ID it matched to and add that ID to the list at the bottom of the code
        .where(qAttendancelist.present.isTrue())
        .list(user.id);

    ListSubQuery<LocalDate> eventDate = new JPASubQuery().from(qActivity)
        .where(qActivity.id.in(idList))
        .list(qActivity.activityDate);

     List<EventDTO> query = from(qUser)
        .innerJoin(qUser.attendancelist, qAttendancelist)
        .innerJoin(qAttendancelist.activity, qActivity)
        .leftJoin(qActivity.activityLocation, qActivityLocation)
        .where(user.id.in(allUserAtEvent))
        .where(qActivity.id.notIn(idList))
        .where(qAttendancelist.present.isTrue())
        .where(qActivity.activityDate.gtAll(eventDate)) 
        .groupBy(qActivity.name, qActivityLocation.name, qActivity.activityDate)
        .orderBy(user.id.desc())
        .list(new QEventDTO(qActivity.id, qActivity.name, qActivityLocation.name, //the matched ID));

return query;
}

1 个答案:

答案 0 :(得分:0)

您的Activity类(由qActivity对象在此查询中表示)具有一个名为“id”的属性,即参数匹配的属性。