从联接查询中读取嵌套对象的最佳方法是什么

弗拉德

假设我有一个如下模型

class Chest {
  public Id id;
  public List<Drawer> drawers;
  public Price price;
}

class Drawer {
  public Id id;
  public Price price;
}

还有一个JOOQ查询,以获取带有其抽屉的Chest对象:

dsl.selectFrom(CHEST.join(DRAWERS).onKey()).where(CHEST.ID.eq(1)).fetch()

从上面的查询结果构造Chest对象的最佳方法是什么?

谢谢。

卢卡斯·埃德(Lukas Eder)

通常,JOIN用于物化对象图实际上并不能很好地工作,因为您试图在映射算法中再次规范化数据之前将数据库实体规范化为表(具有重复项)。JPA通过提供一种不提供太多SQL功能的替代查询语言,向您隐藏了这些东西。

但是,在您的特定情况下,您可以使用Result.intoGroups()方法通过jOOQ API来使其运行因此:

Map<Record, Result<Record>> result = 
    dsl.selectFrom(...).fetch().intoGroups(CHEST.fields());

List<Chest> list = new ArrayList<>();
for (Entry<Record, Result<Record>> entry : result.entrySet()) {
    Record chest = entry.getKey();
    Result<Record> drawers = entry.getValue();

    list.add(new Chest(
        chest.into(Id.class),      // These into(Class<?>) methods assume that you
        drawers.into(Drawer.class) // want to use jOOQ's DefaultRecordMapper
    ));
}

上面的算法可能不完整,或者不是您所需要的。但是,它将为您提供通过jOOQ API开箱即用的可能的一般思路。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Rails中迭代嵌套对象的最佳方法是什么

来自分类Dev

POST 嵌套对象的非输入数据的最佳方法是什么?

来自分类Dev

在ElasticSearch中将新元素推送/添加到嵌套的对象数组中的最佳方法是什么?

来自分类Dev

联接表的最佳方法是什么

来自分类Dev

处理红宝石中嵌套条件的最佳方法是什么?

来自分类Dev

在Angular中嵌套项目的最佳方法是什么

来自分类Dev

在Python中编写多重嵌套的for循环的最佳方法是什么

来自分类Dev

处理红宝石中嵌套条件的最佳方法是什么?

来自分类Dev

在Erlang中读取大型JSON文件的最佳方法是什么?

来自分类Dev

在php中读取函数参数的最佳方法是什么?

来自分类Dev

在php中读取函数参数的最佳方法是什么?

来自分类Dev

在Azure Service Fabric中查询数据的最佳方法是什么?

来自分类Dev

在Rails表单对象中处理日期的最佳方法是什么

来自分类Dev

在Android中绘制任意对象的最佳方法是什么?

来自分类Dev

在JavaScript中删除对象的最佳方法是什么?

来自分类Dev

在JavaScript对象中迭代属性的最佳方法是什么?

来自分类Dev

从键列表中获取对象的最佳方法是什么?

来自分类Dev

在Java List中合并相似对象的最佳方法是什么?

来自分类Dev

在Redis中存储对象的最佳方法是什么?

来自分类Dev

模板方法中可调用对象的最佳类型是什么?

来自分类Dev

Cython中的枚举是检查对象的最佳方法是什么?

来自分类Dev

对Android中的许多对象使用SoundPools的最佳方法是什么?

来自分类Dev

在对象中定义因变量的最佳方法是什么?

来自分类Dev

在Rails表单对象中处理日期的最佳方法是什么

来自分类Dev

在Rails中设置固定对象关系的最佳方法是什么

来自分类Dev

防止在 Realm 中复制对象的最佳方法是什么?

来自分类Dev

在文件中存储大量对象的最佳方法是什么?

来自分类Dev

变异嵌套枚举的最佳方法是什么?

来自分类Dev

迭代嵌套注释的最佳方法是什么?

Related 相关文章

  1. 1

    在Rails中迭代嵌套对象的最佳方法是什么

  2. 2

    POST 嵌套对象的非输入数据的最佳方法是什么?

  3. 3

    在ElasticSearch中将新元素推送/添加到嵌套的对象数组中的最佳方法是什么?

  4. 4

    联接表的最佳方法是什么

  5. 5

    处理红宝石中嵌套条件的最佳方法是什么?

  6. 6

    在Angular中嵌套项目的最佳方法是什么

  7. 7

    在Python中编写多重嵌套的for循环的最佳方法是什么

  8. 8

    处理红宝石中嵌套条件的最佳方法是什么?

  9. 9

    在Erlang中读取大型JSON文件的最佳方法是什么?

  10. 10

    在php中读取函数参数的最佳方法是什么?

  11. 11

    在php中读取函数参数的最佳方法是什么?

  12. 12

    在Azure Service Fabric中查询数据的最佳方法是什么?

  13. 13

    在Rails表单对象中处理日期的最佳方法是什么

  14. 14

    在Android中绘制任意对象的最佳方法是什么?

  15. 15

    在JavaScript中删除对象的最佳方法是什么?

  16. 16

    在JavaScript对象中迭代属性的最佳方法是什么?

  17. 17

    从键列表中获取对象的最佳方法是什么?

  18. 18

    在Java List中合并相似对象的最佳方法是什么?

  19. 19

    在Redis中存储对象的最佳方法是什么?

  20. 20

    模板方法中可调用对象的最佳类型是什么?

  21. 21

    Cython中的枚举是检查对象的最佳方法是什么?

  22. 22

    对Android中的许多对象使用SoundPools的最佳方法是什么?

  23. 23

    在对象中定义因变量的最佳方法是什么?

  24. 24

    在Rails表单对象中处理日期的最佳方法是什么

  25. 25

    在Rails中设置固定对象关系的最佳方法是什么

  26. 26

    防止在 Realm 中复制对象的最佳方法是什么?

  27. 27

    在文件中存储大量对象的最佳方法是什么?

  28. 28

    变异嵌套枚举的最佳方法是什么?

  29. 29

    迭代嵌套注释的最佳方法是什么?

热门标签

归档