使用 JOOQ 创建动态主键约束
Create dynamic primary key constraint with JOOQ
我正在使用 JOOQ(JOOQ 中的新手)在我的 spring 引导项目中使用 Rest API 在运行时创建数据库。
在其中一种情况下,我需要创建一个带有复合主键的 table,它可以是多列的组合。
我正在使用下面的代码来创建约束 -
ArrayList<Constraint> constraints = new ArrayList<>();
constraints.add(constraint(name("pk_" + tableName))
.primaryKey(field("column1"), field("column2")));
我已经有 List<Field<?>>
,它将用作复合主键。
当主键约束可以支持 n 列时,我怎样才能使它动态化?
有什么方法可以直接在 .primarykey()
API?
中提供字段列表
约束 API 中缺少在这种情况下人们可能期望的 primaryKey(Collection<? extends Field<?>>)
的常见重载。我已经为 jOOQ 3.15 创建了一个功能请求:https://github.com/jOOQ/jOOQ/issues/11816
您可以只使用 ConstraintTypeStep.primaryKey(Field<?>...)
using standard JDK Collection.toArray()
方法:
List<Field<?>> list = ...
// Pre Java 11
constraints.add(constraint(...).primaryKey(list.toArray(new Field<?>[0])));
// Using new JDK 11 API
constraints.add(constraint(...).primaryKey(list.toArray(Field<?>[]::new)));
我正在使用 JOOQ(JOOQ 中的新手)在我的 spring 引导项目中使用 Rest API 在运行时创建数据库。 在其中一种情况下,我需要创建一个带有复合主键的 table,它可以是多列的组合。 我正在使用下面的代码来创建约束 -
ArrayList<Constraint> constraints = new ArrayList<>();
constraints.add(constraint(name("pk_" + tableName))
.primaryKey(field("column1"), field("column2")));
我已经有 List<Field<?>>
,它将用作复合主键。
当主键约束可以支持 n 列时,我怎样才能使它动态化?
有什么方法可以直接在 .primarykey()
API?
约束 API 中缺少在这种情况下人们可能期望的 primaryKey(Collection<? extends Field<?>>)
的常见重载。我已经为 jOOQ 3.15 创建了一个功能请求:https://github.com/jOOQ/jOOQ/issues/11816
您可以只使用 ConstraintTypeStep.primaryKey(Field<?>...)
using standard JDK Collection.toArray()
方法:
List<Field<?>> list = ...
// Pre Java 11
constraints.add(constraint(...).primaryKey(list.toArray(new Field<?>[0])));
// Using new JDK 11 API
constraints.add(constraint(...).primaryKey(list.toArray(Field<?>[]::new)));