2013-04-25 45 views
2
關係

可以說我有這個兩個實體bean:映射一個一對多使用QueryDSL SQL

public class Audit { 

    private String code; 

    private java.sql.Timestamp creationDate; 

    private String creatorId; 

    private java.sql.Timestamp deletionDate; 

    private String description; 

    private String id; 

    private String name; 

    private String notes; 

    private Short status; 

    private List<AuditParticipant> participants; 
} 

和:

public class AuditParticipant { 

    private String auditId; 

    private String department; 

    private String id; 

    private String name; 

    private String notes; 

    private String role; 

    private String surname; 
} 

...其中Audit可以有1..1 Participants ,我如何使用QueryDSL SQL將參與者列表投影到審計bean(獲取屬於審計的所有參與者)?

這些bean是使用QueryDSL代碼生成生成的。

感謝

回答

3

Querydsl提供結果的聚集功能,對於這種情況http://www.querydsl.com/static/querydsl/3.1.1/reference/html/ch03s02.html#d0e1634

在這種情況下,它會是這樣的

query.from(audit) 
    .innerJoin(participant).on(...) 
    .transform(groupBy(audit.id).as(audit, list(participant))); 

看到這些例子的其它GROUPBY選項https://github.com/mysema/querydsl/blob/master/querydsl-collections/src/test/java/com/mysema/query/collections/GroupByTest.java

+0

酷,這應該工作。謝謝蒂莫。 – Nedo 2013-04-29 10:41:38