【发布时间】:2018-09-12 17:49:42
【问题描述】:
我正在评估我们是否可以为我们的项目从普通 JDBC 迁移到 jOOQ。其中大部分看起来很有希望,但我目前想知道一个特定的流程:嵌套行。让我解释一下。
假设你有以下两个表:
class(id, name)
student(id, name, class_id)
(我们假设一个学生只能是一个班级的一部分。)
让我们为这些表创建一个响应类型。我将在下面的查询中使用这些。
create type type_student as(id integer, name text);
create type type_class as(id integer, name text, students type_student[]);
现在让我们使用嵌套行获取所有类及其学生:
select row(class.id, class.name, array
(
select row(student.id, student.name)::type_student
from student
where student.class_id = class.id
))::type_class
from class
一个有用的变体是只使用数组中的嵌套行:
select class.id, class.name, array
(
select row(student.id, student.name)::type_student
from student
where student.class_id = class.id
) as students
from class
我想知道 jOOQ 是否有一种优雅的方法来解析包含嵌套行的此类结果?
【问题讨论】:
-
“解析”是什么意思?您是在谈论 jOOQ 解析器(例如通过此网站公开:jooq.org/translate),它将您的 SQL 字符串解析为 jOOQ 表达式树,或者您是在使用这个术语通俗地说“jOOQ 支持该功能”?
-
嗨@LukasEder。我的措辞确实不是很清楚。我的意思是询问 jOOQ 是否支持以优雅的方式将这些结果解析为 POJO 模型。从使用 JDBC 的经验中,我了解到解析
row(...)结果,尤其是嵌套的row(...)结果非常麻烦且令人沮丧。我想知道 jOOQ 提供了哪些功能来解析这些。所以关于你的问题,我问的是后者。我希望这有点道理。谢谢。 -
哦,我明白了,“解析”就像“解析繁琐的 PostgreSQL 对象表示法”:-)
标签: sql postgresql jooq