6

假设我有这两个 bean 实体:

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..n Participants,我如何使用 QueryDSL SQL 将参与者列表投影到 Audit bean 中(获取属于审计的所有参与者)?

bean 是使用 QueryDSL 代码生成生成的。

谢谢

4

1 回答 1

7

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

于 2013-04-27T08:56:11.800 回答