使用jooq将表名称强制转换为OID



我需要使用JOOQ将表名强制转换为对象标识符。在简单的SQL中,我会做:

'my_table'::regclass::oid

我找不到用于强制转换值的DataType(它存在PostgresDataType.OID,但不存在PostgresDataType.REGCLASS或类似的类型,也不赞成直接使用PostgresDataType(。

我也玩过DSL.inlineDSL.val,但无法获得所需的输出。

更新

我意识到有一个PostgresDSL.oid返回Field<Long>并生成以下输出"my_table".oid,但我没有表的引用(我将表名作为文本(,所以它对我的用例无效。


有没有办法通过JOOQ将表名强制转换为Postgres对象标识符(OID(?

经过一段时间的测试,我找到了一个可行的解决方案(不确定是最好的(。

DSL.field("{0}::regclass::oid", DSL.inline(name))

通过这种方式,我们创建了一个";字段";所有需要硬编码的铸件,并将值设置为绑定。

最新更新