Postgresql и JDBC проверяют TYPE ENUM в метаданных - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь получить метаданные базы данных и определить, присутствует ли созданная мной таблица или нет. Я могу получить созданную таблицу, но у меня проблема с получением TYPE ENUM в метаданных. Вы можете найти код JDBC, который у меня есть, что я должен сделать, чтобы получить ТИП ENUM?

Код bwlow прекрасно печатает таблицы, которые я создал, но я не могу получить ТИП ENUM, который я создал. Должен ли я добавить какие-либо дополнительные типы, такие как ENUM?

void printDBTables(@NonNull final Connection connection) throws SQLException {
    final DatabaseMetaData dbMetadata = connection.getMetaData();
    final String[] types = {"TABLE"};
    final ResultSet rs = dbMetadata.getTables(null, null, null, types);
    while (rs.next()) {
        log.info("Found Table with name: {}", rs.getString(3));
    }

Я немного новичок в Java, и любая помощь здесь приветствуется. Ниже приведен пример запроса, который я использую CREATE TYPE TESTQ AS ENUM ('ONE', 'TWO', 'THREE');

1 Ответ

1 голос
/ 30 октября 2019

Поскольку типы enum не являются стандартным SQL, нельзя ожидать, что JDBC подготовит для них какие-либо условия.

Вам потребуется запросить метаданные PostgreSQL:

SELECT t.typname, e.enumlabel
FROM pg_type AS t
   JOIN pg_enum AS e ON t.oid = e.enumtypid
WHERE t.typname = 'testq'
ORDER BY e.enumsortorder;

 typname | enumlabel 
---------+-----------
 testq   | ONE
 testq   | TWO
 testq   | THREE
(3 rows)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...