2016-03-18 10 views
0

Wie kann ich die übereinstimmende ID aus dieser Abfrage abrufen und sie der Liste am Ende der Abfrage hinzufügen? Zur Zeit bekomme ich eine Liste mit Ergebnissen, aber ich habe keine Ahnung mit welcher ID in dem Parameter sie übereinstimmen.JPA-Abfrage - ID zur Liste hinzufügen

Siehe Kommentare im Code.

P.S. Dies ist nicht die vollständige Abfrage, ich habe es kleiner gemacht, damit es leichter zu lesen ist.

@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; 
} 

Antwort

0

Ihre Aktivitätsklasse (in dieser Abfrage durch das Objekt qActivity dargestellt) hat eine Eigenschaft namens „id“, das ist, was die Parameter angepasst ist.

+0

Es entspricht einer ID, die in der IDList ist. Wenn also die Liste 3 IDs hat und die Abfrage 15 Ergebnisse zurückgibt, muss ich wissen, welche Ergebnisse zu ID # 1 gehören, welche Ergebnisse zu ID # 2 usw. gehören. Ich habe den Namen des Parameters bearbeitet, um ihn zu erstellen leichter zu verstehen –

Verwandte Themen