Joe*_*oel 10 postgresql json jooq
使用JOOQ查询postgres json对象有什么支持?
例如,
SELECT id, data->'author'->>'first_name' as author_first_name FROM books;
Run Code Online (Sandbox Code Playgroud)
Luk*_*der 19
目前(截至jOOQ 3.4),jOOQ中没有对PostgreSQL特定的JSON运算符的本机支持.有一个待处理的功能请求#2788支持PostgreSQL json数据类型.
但是,您始终可以使用纯SQL.您的查询可以用jOOQ表示:
DSL.using(configuration)
.select(BOOKS.ID, field("{0}->'author'->>'first_name'",
String.class, BOOKS.DATA
).as("author_first_name"))
.from(BOOKS)
.fetch();
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅DSL.field()javadocs方法.
如果您使用了很多这些JSON路径表示法,那么您可能会将迷你API分解为:
public static Field<Object> jsonObject(Field<?> field, String name) {
return DSL.field("{0}->{1}", Object.class, field, DSL.inline(name));
}
public static Field<String> jsonText(Field<?> field, String name) {
return DSL.field("{0}->>{1}", String.class, field, DSL.inline(name));
}
Run Code Online (Sandbox Code Playgroud)
以上可以这样使用:
DSL.using(configuration)
.select(BOOKS.ID, jsonText(jsonObject(BOOKS.DATA, "author"), "first_name")
.as("author_first_name"))
.from(BOOKS)
.fetch();
Run Code Online (Sandbox Code Playgroud)