使用QueryDSL SQL映射一对多关系

Ned*_*edo 5 java sql jdbc querydsl

可以说我有这两个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;
}
Run Code Online (Sandbox Code Playgroud)

并且:

 public class AuditParticipant {

    private String auditId;

    private String department;

    private String id;

    private String name;

    private String notes;

    private String role;

    private String surname;
}
Run Code Online (Sandbox Code Playgroud)

...哪里Audit可以有1..n Participants,我如何使用QueryDSL SQL将参与者列表投影到Audit bean(获取属于审计的所有参与者)?

使用QueryDSL代码生成生成bean.

谢谢

Tim*_*per 6

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)));
Run Code Online (Sandbox Code Playgroud)

有关其他groupBy选项,请参阅这些示例https://github.com/mysema/querydsl/blob/master/querydsl-collections/src/test/java/com/mysema/query/collections/GroupByTest.java