Jooq record.into (Pojo.class) с проблемой с тем же именем поля - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть код, который извлекает одну запись из 2 объектов (POJO, сгенерированных JooQ) из 2 таблиц.

 Record record = dsl.select()
            .from(ISSUE)
            .leftJoin(CLIENT).on(CLIENT.ID.eq(ISSUE.CLIENT_ID))
            .where(ISSUE.ID.eq(id))
            .fetchOne();
    JIssue jIssue = record.into(JIssue.class);
    JClientRecord jClient = record.into(JClientRecord.class);

И таблица ISSUE, и таблица CLIENT имеют поле PK "ID".

Проблема в том, что при отображении в (POJO.class) поля таблицы с одинаковыми именами неправильно отображаются в POJO. В приведенном выше примере jIssue принимает идентификатор jClient .

При использовании TableRecords вместо того, чтобы все отображения POJO выполнялись правильно, но вы не можете использовать TableRecord в сгенерированном DAO, он принимает сгенерированный POJO.

Как я могу решить эту проблему, чтобы jooq мог правильно сопоставить сгенерированные поля pojo?

1 Ответ

0 голосов
/ 06 сентября 2018

Классы POJO не имеют надежной метаинформации для четкой неоднозначности между двумя столбцами с одинаковыми именами из исходной записи. Однако вы можете скопировать вашу присоединенную запись в TableRecord для каждой таблицы, а затем снова скопировать эту запись в ваш POJO:

JIssue jIssue = record.into(ISSUE).into(JIssue.class);
JClientRecord jClient = record.into(CLIENT).into(JClientRecord.class);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...