我的 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
从 jOOQ 3.19 开始,
CHECK
API 不提供 org.jooq.Meta
约束,但未来没有理由不支持这些:
请注意
org.jooq.Meta
中缺少某些元数据的历史原因仅仅是因为该 API 主要由 JDBC DatabaseMetaData
支持,并且该 API 非常有限。但是 jOOQ 有用于代码生成器的内部供应商特定查询,也可以在 org.jooq.Meta
中使用