JOOQ IllegalArgumentException: Field () is not contained in Row

问题描述 投票:0回答:2

我真的很困惑,根本无法对错误进行推理。

Integer id = 5;
        if (id != null)
        {
            final var configurationResult = context.select(Configuration.CONFIGURATION)
                    .from(Configuration.CONFIGURATION)
                    .where(Configuration.CONFIGURATION.DEVICE_ID.eq(id))
                    .fetch();

            configurationResult.forEach(configuration -> {
                final var minTemp = configuration.getValue(Configuration.CONFIGURATION.MINIMUM_TEMPERATURE_THRESHOLD);
               System.out.println("MinimumTemp is: " + minTemp);
            });
        }

异常是最混乱的:

Exception in thread "" java.lang.IllegalArgumentException: Field ("public"."configuration"."minimum_temperature_threshold") is not contained in Row (row (
  "public"."configuration"."configuration_id",
  "public"."configuration"."minimum_temperature_threshold",
  "public"."configuration"."maximum_temperature_threshold",
  "public"."configuration"."ideal_temperature",
  "public"."configuration"."minimum_ph_threshold",
  "public"."configuration"."maximum_ph_threshold",
  "public"."configuration"."ideal_ph",
  "public"."configuration"."light_on_time",
  "public"."configuration"."light_off_time",
  "public"."configuration"."update_time",
  "public"."configuration"."device_id"
))

如果我打印结果的内容,我会得到以下内容

|configuration                                     |
|(6, 22, 28, 24, 7, 9, 8, 2023-05-15T18:00, 2023...|

所以数据就在那里。

有人可以帮助我了解正在发生的事情并帮助我指引正确的方向吗?

达米安

jooq
2个回答
1
投票

答案在这一行:

final var configurationResult = context.select()
                    .from(Configuration.CONFIGURATION)
                    .where(Configuration.CONFIGURATION.DEVICE_ID.eq(id))
                    .fetch();

当我选择表格的所有字段时,select() 方法需要为空。


1
投票

当您将表引用传递给

select()
子句时,您将投影一个嵌套记录。请参阅有关以下内容的手册部分:

这就像在本机 PostgreSQL 中一样工作,并提供了嵌套多个

TableRecord
类型的强大方法。

如果您只需要一个列(

CONFIGURATION.MINIMUM_TEMPERATURE_THRESHOLD
),那么只投影它就足够了。

我同意这里的错误信息令人困惑。

Row (row (
是对问题的(非常)微妙的暗示,一点也不明显。我创建了一个问题来解决错误消息:#15085

© www.soinside.com 2019 - 2024. All rights reserved.