2016-03-18 25 views
0

Bu sorgudan eşleşen kimliği nasıl alabilir ve sorgunun altındaki listeye nasıl ekleyebilirim? Şu anda sonuçlarla bir liste alıyorum, ancak parametrede hangi ID ile eşleştiklerini bilmiyorum.JPA sorgusu - eşleşecek kimliği eşleme listesine ekleyin

Koddaki yorumlara bakın.

P.S. Bu tam sorgu değil, daha küçük yaptım, böylece daha kolay okunması. (QActivity nesnesi tarafından bu sorgu temsil)

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

cevap

0

Kişisel Etkinlik sınıfı bu parametre eşleştirilir buydu "id" adlı bir özelliğe sahiptir.

+0

IdList öğesindeki bir kimlikle eşleşir. Yani listenin 3 kimliği varsa ve sorgu 15 sonuç döndürürse, bu 15'in dışında hangi sonuçların kimlik no. 1'e ait olduğunu bilmem gerekir. Bu sonuç # 2'ye aittir. Bunun için parametrenin adını düzenledim. anlaşılması daha kolay –

İlgili konular