我需要使用 JOOQ 将表名转换为对象标识符。在普通 SQL 中我会这样做:
'my_table'::regclass::oid
我找不到用于转换值的数据类型(它存在 PostgresDataType.OID
,但不存在 PostgresDataType.REGCLASS
或类似的东西,也不推荐直接使用 PostgresDataType
)。
我也玩过DSL.inline
, DSL.val
,但无法获得所需的输出。
更新
我意识到有一个PostgresDSL.oid
返回 Field<Long>
并产生以下输出 "my_table".oid
,但我没有该表的引用(我将表名称作为文本),因此它对我的用例无效。
有没有办法通过 JOOQ 将表名转换为 Postgres 对象标识符 (OID)?
最佳答案
经过一段时间的测试,我找到了一个可行的解决方案(不确定是最好的)。
DSL.field("{0}::regclass::oid", DSL.inline(name))
通过这种方式,我们创建了一个“字段”,其中包含所有需要硬编码的转换,并将值设置为绑定(bind)。
关于sql - 使用 jooq 将表名转换为 OID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64966855/