还有什么比
更地道的吗?List<JSON> jsons = context.fetch("select row_to_json(p) j from persons p")
.stream()
.map(r -> r.get("j", JSON.class))
.toList();
使用row_to_json()
与jOOQ?
我尝试使用function("row_to_json", ...)
,但不知道如何填充剩余的参数。
这种语法(例如Oracle有JSON_OBJECT(*)
)可能在不久的将来通过#10685开箱支持。
DSL.function()
方法需要Field<?>...
列表,因此目前它不能接受表。但是你也可以为你的函数使用一个普通的SQL模板,而不必使整个查询成为一个模板,例如:
static Field<JSON> rowToJson(Table<?> t) {
return DSL.field("row_to_json({0})", SQLDataType.JSON, t);
}
现在像这样使用:
context.select(rowToJson(PERSONS)).from(PERSONS).fetch();