JOOQ 中的返回表 CHECK 约束

问题描述 投票:0回答:1

我的 PostgreSQL 数据库中有一个表,它是使用以下 Jooq 查询生成的:

context.createTable("object_brick_car")
        .column(field(name("id"), Integer.class), SQLDataType.INTEGER.identity(true))
        .primaryKey("id")
        .column("record_id", INTEGER)
        .column("field_name", VARCHAR(255))
        .column("capacity", INTEGER)
        .column("power", INTEGER.default_(0))
        .constraints(
            constraint("company_index_check")
                .check(field(name("power"), INTEGER).between(0, 500)),
            constraint("object_brick_car_foreign_key").foreignKey("record_id").references("object_store_car", "id")
        ).execute();

此表已正确生成,记录器显示正在执行以下 SQL 查询:

create table "object_brick_car" ("id" int generated by default as identity not null, "record_id" int, "field_name" varchar(255), "capacity" int, "power" int default 0, primary key ("id"), constraint "company_index_check" check ("power" between 0 and 500), constraint "object_brick_car_foreign_key" foreign key ("record_id") references "object_store_car" ("id"))

我想使用 Jooq API 检索有关此表的元信息。我可以收集有关数据类型、外键和主键、唯一性约束等的信息。

但是当我尝试通过 Table.getChecks() 收集有关 “company_index_check” 的信息时,我收到了空列表:

Table metadata
                   Indices: 
                  Primary key: constraint "object_brick_car_pkey" primary key ("id") Checks: {} 
                   Foreign keys: constraint "object_brick_car_foreign_key"

是否有任何选项可以通过 Jooq API 接收检查列表并将其映射到 Check 对象? Jooq版本是3.18.7

java postgresql jooq
1个回答
0
投票

从 jOOQ 3.19 开始,

CHECK
API 不提供
org.jooq.Meta
约束,但未来没有理由不支持这些:

请注意

org.jooq.Meta
中缺少某些元数据的历史原因仅仅是因为该 API 主要由 JDBC
DatabaseMetaData
支持,并且该 API 非常有限。但是 jOOQ 有用于代码生成器的内部供应商特定查询,也可以在
org.jooq.Meta

中使用
© www.soinside.com 2019 - 2024. All rights reserved.