Java 按用户定义类型筛选时如何在jooq中形成where子句

Java 按用户定义类型筛选时如何在jooq中形成where子句,java,postgresql,jooq,user-defined-types,Java,Postgresql,Jooq,User Defined Types,我将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 ); 那么,如何使用jooq获取我的_表的所有记录,其中my_table.something.name='test'?我试过这样做: ctx.se

我将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 
);
那么,如何使用jooq获取我的_表的所有记录,其中my_table.something.name='test'?我试过这样做:

ctx.selectFrom(我的表格)
.where(MY_TABLE.SOMETHING.NAME.eq(“test”)\\SOMETHING是一个表字段
...                                        \\ 并且没有名称字段
但这不起作用(在代码注释中解释)。这就是我想在jooq中做的:

SELECT * FROM my_table WHERE (something).name = 'test';

通过DSL访问用户定义的类型属性目前未在jOOQ 3.11中实现。相关未决功能请求如下所示:

与往常一样,在这种限制下运行时,您可以使用:

ctx.selectFrom(我的表格)
.where(“{0}.{1}={2}”,MY_TABLE.SOMETHING,MY_TYPE.NAME,DSL.val(“test”))
...
当然,如果您经常这样做,您可能希望将这种逻辑包装到您自己的客户端模板API中,以改进对类似模式的重用