在Postgres中,我创建了一个UDT,如下所示
CREATE TYPE MY_TYPE AS ENUM ('FAILED', 'SUCCESS');
在postgres cli中,我可以像
一样检索UDT值\dT+ MY_TYPE
列出了UDT的详细信息,包括其在' Elements'下的枚举值。柱
编辑:添加" \ dT +"的结果命令
postgres=# \dT+ status_type
List of data types
Schema | Name | Internal name | Size | Elements | Owner | Access privileges | Description
--------+-------------+---------------+------+----------+----------+-------------------+-------------
public | status_type | status_type | 4 | WAITING +| Postgres | |
| | | | STARTED +| | |
| | | | PAUSED +| | |
| | | | SUCCESS +| | |
| | | | FAILED | | |
现在,我在spring项目中使用JOOQ,并希望使用JOOQ获取UDT的值。任何人都可以帮我解决这个问题吗?
注意:我知道JOOQ在生成类时会生成ENUM类型,但这是获取所需信息的唯一方法吗?
谢谢!
答案 0 :(得分:0)
我假设您想要动态地从数据库中获取所有枚举文字的列表。 jOOQ代码生成器使用的SQL查询与此类似:
SELECT n.nspname, t.typname, e.enumlabel, e.enumsortorder
FROM pg_enum e
JOIN pg_type t ON e.enumtypid = t.oid
JOIN pg_namespace n ON t.typnamespace = n.oid
ORDER BY n.nspname, t.typname, e.enumsortorder
现在,只需使用jOOQ像任何其他查询一样运行此查询,以获得类似这样的内容(from the Sakila database):
nspname |typname |enumlabel |enumsortorder |
--------|------------|----------|--------------|
public |mpaa_rating |G |1 |
public |mpaa_rating |PG |2 |
public |mpaa_rating |PG-13 |3 |
public |mpaa_rating |R |4 |
public |mpaa_rating |NC-17 |5 |