jOOQ和自动生成,如何避免表POJO中的UDT记录
我在PostgreSQL数据库中定义了一个类型和一个视图。T
V
CREATE TYPE my_type AS
(
mt_column1 smallint NOT NULL
);
CREATE VIEW my_view
AS SELECT
some_column_id integer
ARRAY(SELECT
ROW(an_int)::my_type
FROM a_table
) AS my_view_types
FROM a_regular_table
WHERE my_condition_hold);
使用3.7版上的代码生成,我得到了一个UDT记录类和一个表记录类以及UDT POJO类和表POJO类。MyTypeRecord
MyViewRecord
MyType
MyView
生成的类具有一个数组 。MyView
MyTypeRecord
public class MyView extends Object implements Serializable, Cloneable, IMyView {
private static final long serialVersionUID = 1984808170;
private final Long some_column_id;
private final MyTypeRecord[] my_view_types;
}
而在POJO中,我会期望一系列POJO,例如:
private final MyType[] my_view_types;
另一个有趣的事实是,pojo和类型的记录在文件夹中,而对于视图,它们在文件夹中:也许这可以帮助找到解决方案/解释。udt
tables
有没有办法在世代时进行仅pojo转换?View
根据要求,我附上了一个工作示例,该示例生成我所描述的记录和POJO。它在此链接中与FileDropper共享。
我还报告了一个可能的技巧来避免这个问题,如果你真的很绝望,就要使用它。正如本stackoverflow问题/答案中所报告的那样,jOOQ即使我们分配了POJO而不是记录,也无法自动将记录数组转换为记录类。因此,您可以使用函数 将 s 数组解析为 json。在我的例子中是:MyTypeRecord
ROW
array_to_json
CREATE VIEW my_view
AS SELECT
some_column_id integer
array_to_json(ARRAY(SELECT
ROW(an_int)::my_type
FROM a_table
))::json AS my_view_types
FROM a_regular_table
WHERE my_condition_hold);
如果您注册此绑定,jOOQ 应将其自动转换为 JSON。