jOOQ Map Record от raw SQL до Pojos - PullRequest
       14

jOOQ Map Record от raw SQL до Pojos

0 голосов
/ 09 июля 2020

У меня есть две таблицы с отношением "один ко многим", допустим, это row и columns, где строка может иметь много столбцов.

Используя jOOQ (3.12.3), я могу выполнить следующий запрос:

    Map<JooqRowPojo, List<JooqColumnPojo>> join = dslContext.select()
    .from(ROW).join(COLUMN).onKey(Keys.COLUMN__ROW_ID__FK)
    .fetchAsync().thenApply(r -> {
      return r.intoGroups(r1 -> r1.into(ROW).into(JooqRowPojo.class),
          r1 -> r1.into(COLUMN).into(JooqColumnPojo.class));
    }).toCompletableFuture().join();

Это возвращает строки, которые я ожидаю сопоставлены с Pojos, как я и ожидал.

Однако, если я попробую сделать это с необработанным SQL:

dslContext.fetch("SELECT * FROM row JOIN column ON row.row_id = column.row_id")
  .intoGroups(r1 -> r1.into(ROW).into(JooqRowPojo.class),
              r1 -> r1.into(COLUMN).into(JooqColumnPojo.class))

Я получаю несколько экземпляров PoJo, все значения которых равны null, а не значения из таблицы. Я не уверен, почему я не могу сопоставить записи из необработанных sql?

NB. Это упрощенный пример поведения, которое я наблюдал, на практике мне нужно выполнить сложный запрос, который не может быть выраженным в JOOQ API / DSL.

...