【问题标题】:How do I use the map returned by jooq's fetchMap?如何使用jooq的fetchMap返回的地图?
【发布时间】:2013-11-25 04:06:04
【问题描述】:

我正在使用 jooq,我喜欢 fetchMap(Field) 方法。如果我想使用单个字段作为键,它会很好用。现在,我想使用两个字段作为键来获取地图。 fetchMap(Field[]) 方法返回一个以 Record 为键的映射。我有键中字段的值,但我不确定如何将它们转换为 Record 对象,以便我可以从地图中获取值。

基本上,我正在寻找一种从一组字段值中实例化记录的方法。

更多信息:我有一个省级报告表,每年每周都有。表键是 (province_id, week_number)。 我可以这样做...

DSLContext create = DSL.using(connection, SQLDialect.ORACLE);
Map<Record, ReportRecord> results = create.selectFrom(Tables.Report).fetchMap(new Field[]{Tables.Report.province_id, Tables.Report.week_number});

但是现在,假设我的省 ID 为 2,周数为 42。我想从中创建一个记录,所以我可以这样做

ReportRecord report = results.get(record);

现在,我已经切换到打电话了

Result<ReportRecord> results = create.selectFrom(Tables.Report).fetch();

,遍历它,并自己创建一个地图。它正在工作,但我真的很想知道 fetchMap 方法是如何使用的。在 jooq 手册或 javadoc 中找不到任何内容。

【问题讨论】:

  • 我不太确定问题出在哪里。您能否通过代码示例更详细地解释这一点?
  • 好的,我添加了更多细节。

标签: java sql jooq


【解决方案1】:

嗯,实际上没有一个非常简单的方法可以做到这一点。你可以做的是:

Record record = create.newRecord(Report.province_id, Report.week_number);
record.setValue(Report.province_id, 2);
record.setValue(Report.week_number, 42);
ReportRecord report = results.get(record);

同意,这有点冗长,对用户不太友好。这应该在jOOQ 3.3 with #2847中改进

【讨论】:

  • 当然有点冗长,但至少这是可行的。非常感谢。赞赏。
猜你喜欢
  • 2015-05-18
  • 2016-12-28
  • 2019-03-26
  • 2014-05-28
  • 1970-01-01
  • 2015-04-18
  • 1970-01-01
  • 2016-11-29
  • 2020-05-13
相关资源
最近更新 更多