я стараюсь, чтобы получить все Columns
из в Table
с JOOQ
из базы данных H2
(для тестирования - позже это может быть что-то вроде MySQL
или PostGRE
)JOOQ получить столбцы из таблицы
все нормально, но когда я петля через мой извлеченной Columns
и записывать результаты в консоли я заметил проблемы (? возможно это ошибка)
мой код журнала выглядит следующим образом:
System.out.println(String.format("%d > [%s].[%s].[%s]", col.getOrdinalPosition(), col.getTableCatalog(), col.getTableName(), col.getColumnName()));
и выход из моей таблицы заключается в следующем:
0 > [TEST].[PERSON].[PERSON]
1 > [TEST].[PERSON].[PERSON]
2 > [TEST].[PERSON].[PERSON]
я ожидал, что это будет:
0 > [TEST].[PERSON].[ID]
1 > [TEST].[PERSON].[FIRSTNAME]
2 > [TEST].[PERSON].[LASTNAME]
как создать сценарий для таблицы:
CREATE TABLE PERSON
(
ID INTEGER NOT NULL,
FIRSTNAME VARCHAR(255),
LASTNAME VARCHAR(255)
);
ALTER TABLE PERSON
ADD PRIMARY KEY (ID);
так, наконец, мой вопрос : как я могу получить «реальное» имя столбца?
EDIT: пытался использовать JOOQ
версии 3.9.0 и 3.9.1
UPDATE: Я нашел другой способ получить колонные имена:
, если у вас уже есть экземпляр Table<?>
вы можете использовать этот код исправить ошибку
// ordinal position starts at 1 but the fields-array starts at 0!
Field<?> f = tbl.fields()[col.getOrdinalPosition() - 1];
// this is needed due a bug in JOOQ, where the ColumnName is returned incorrect
col.setColumnName(f.getName());
Вопрос: Откуда берутся колонки? Ответ:
DSLContext dslCtx = DSL.using(cfg);
InformationSchema is = dslCtx.informationSchema(tbl);
List<Column> columns = is.getColumns();
Класс Column
вне org.jooq.util.xml.jaxb.Column
пакета JOOQ
«s;
@LukasEder я добавил ответ на свой вопрос к моему первоначальному вопросу; его выход из пакета 'JOOQ' org.jooq.util.xml.jaxb.Column' – lumo
О, извините, спасибо за разъяснение. Ответит, скоро –
Забыл сказать: Спасибо за сообщение об этой проблеме, кстати! –