QueryDSL-一对多关系的DTO预测

时间:2019-03-07 10:45:41

标签: java jpa dsl querydsl dto

我正在考虑使用DTO投影-我有两个具有一对多关系的实体(EntityOne的实例链接到EntityTwo的多个实例),并且我想将结果作为新的DTO对象返回-我目前正在尝试的是这样的:

query.select(Projections.constructor(MyDtoObject.class,
            entityOne, list(entityTwo)))
        .from(entityOne, entityTwo)
        .where(......)

MyDtoObject如下所示:

public class MyDtoObject {

    private EntityOne entityOne;
    private Collection<EntityTwo> entityTwoCollection 

   // getters, setters and an all args constructor method here

}

但是,这带来的MyDtoObjects比预期的要多得多,而且看起来每个人仅持有一个entityTwo对象而不是集合。

如何指示queryDSL创建具有多个entityTwo条目的MyDtoObjects结果对象?在上面的场景中,list(..)方法甚至还能做什么?

1 个答案:

答案 0 :(得分:0)

queryFactory.from(Entity)
    .transform(groupBy(Entity.something).list((    
        Projections.fields(EntityDto.class,
            list(Projections.fields(Dto.class, 
                )).as("CollectionEntity"),
    )));

尝试使用列表进行转换