java在按用户定义类型过滤时如何在jooq中形成where子句
我将postgresql(10.2)与jooq(3.8.7)一起使用,假设我有一个类型和一个表,如下所示:
CREATE TYPE my_type AS (
id INTEGER,
name TEXT
);
CREATE table my_table (
id INTEGER,
something my_type
);
那么如何获取my_tablewhere my_table的所有记录。某物name=“使用jooq进行测试”?我试过这样做:
ctx.selectFrom(MY_TABLE)
.where(MY_TABLE.SOMETHING.NAME.eq("test")) \\ SOMETHING is a TableField
... \\ and does not have NAME field
但这不起作用(在代码注释中解释)。这就是我想在jooq中做的:
SELECT * FROM my_table WHERE (something).name = 'test';
# 1 楼答案
通过DSL访问用户定义的类型属性目前没有在jOOQ 3.11中实现。相关的待定功能请求如下: https://github.com/jOOQ/jOOQ/issues/228
像往常一样,在这种限制下运行时,您可以使用plain SQL templating:
当然,如果您经常这样做,您可能希望将这种逻辑封装到自己的客户端模板API中,以改进对类似模式的重用