当前位置: 首页 > 知识库问答 >
问题:

一对多关系的QueryDSL-DTO投影

梁丘洲
2023-03-14

我正在考虑使用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结果对象?列表(..)方法甚至在上面的场景中做任何事情?

共有1个答案

仉磊
2023-03-14
queryFactory.from(Entity)
    .transform(groupBy(Entity.something).list((    
        Projections.fields(EntityDto.class,
            list(Projections.fields(Dto.class, 
                )).as("CollectionEntity"),
    )));

尝试用列表进行转换

 类似资料:
  • 但是如果可能的话,我想避免这种情况,因为它迫使我定义n个构造函数,为我在投影中想要的n个字段组合定义n个构造函数。

  • 这是项目迁移 这是时间表 这样用户就可以迁移了 这是我的项目模型 这是我的时间表模型: 这是我的用户模型 现在,我从项目返回我的查询 这是可以的,但user_id用户在timesheets.user_id我不能得到它的时间表,并得到它 此控制器按时间表中的项目id返回项目和时间表,但时间表中的用户id我不知道如何将其输入系统

  • 在数据库表之间,绝大多数的关系很可能是一对多的关系,一个表中的记录有可能与另一个表中的许多记录相关。 创建一对多关系的过程与创建一对一关系完全相同。 让我们先通过单击设计 选项卡上清除布局 选项清除布局。 再添加另一个表,如以下屏幕截图所示。 点击保存图标并输入作为表名,然后转到关系视图。 点击显示表选项,然后选择两个表: 和 。如下所示 - 添加和并关闭显示表格对话框。 我们再次执行相同的操作过

  • 我在hibernate中搜索建立关系的各种可能性,遇到了下面的代码片段

  • 对于我正在构建的一个类似论坛的网站,我有PHP类'user'和'post‘。用户有一个帖子数组。如何与关系数据库中的连接相似?在“post”上有一个外键,指向一个“user”?这对我来说是有意义的,因为这是一对一的关系,而“user”到“post”是一对多的,就我所见。欢迎有任何想法-谢谢!