当我当前使用 Jooq 查询时,我将每个记录对象显式转换为预期的记录类型。

Result<Record> result = sql.select().from(Tables.COUNTRY).fetch();
for (Record r : result) {
    CountryRecord countryRecord = (CountryRecord) r;
    //Extract data from countryRecord
    countryRecord.getId();
}

Jooq 是否可以将结果直接转换为所需的记录类型?

如(此不编译):
Result<CountryRecord> countryRecords = (Result<CountryRecord>) sql.select().from(Tables.COUNTRY).fetch();
for (CountryRecord cr : countryRecords) {
    cr.getNamet();
    //etc...
}

最佳答案

当您想要获取生成的记录类型时,您不应该使用 select().from(...) 语法。请改用 selectFrom()。这是记录在这里:

http://www.jooq.org/doc/3.1/manual/sql-execution/fetching/record-vs-tablerecord

所以你的查询应该是:

Result<CountryRecord> countryRecords = sql.selectFrom(Tables.COUNTRY).fetch();
for (CountryRecord cr : countryRecords) {
    cr.getNamet();
    //etc...
}

10-06 15:17