我想将Jooq与jsonb_agg一起使用,以创建我可以作为流读取的jsonb对象。有没有办法在没有Jooq看数据库的情况下做到这一点?
我知道我可以让Jooq查看数据库并确定它找到的聚合但是有没有办法在不经过内省过程的情况下使用它?我已经完成了4次文档并且没有看到答案。
答案 0 :(得分:2)
因此,答案隐藏在DSL文档中,关于定义字段。
所有示例在使用之前的一些变体:
create.select(field("example1"), field("example2")).from(table(a)...
但是,您可以定义自己的字段甚至内联函数定义。
字段定义可能类似于:
Field<Object> example1 = field("example1");
或者如果要定义类型:
Field<String> example2 = field("example2", String.class);
当您想要定义更复杂的字段时,这一点很重要,例如:
Field<String> jsonAry = function("jsonb_agg", String.class, example2);
Jooq真的很想让事情像这样组成。然后你可以:
Fiend<String> fullJson = function("jsonb_build_object", String.class, example1, example2);
然后,如果你groupBy(example1)你得到一个很好的jsonb_agg对象。