JOOQ-getPrimaryKey(),getIdentity()返回null

时间:2019-02-19 16:06:57

标签: java jooq

使用此:

System.out.println("PRIMARY KEY: " + DSL.table(DSL.name(tableName)).getPrimaryKey());

返回null:/(也尝试过getIdentity())

在调用getPrimaryKey之前,我将执行所有查询:

CreateTableColumnStep table = ctx.createTable(tableName).column("id", INTEGER.identity(true));
table.constraints(DSL.constraint("pk_" + tableName).primaryKey("id"));
  

在文本中的输出是:create table filetest(id integer primary   密钥自动增量不为null,Meno varchar(21)为null,Priezvisko   varchar(24)null,Vek int null);

所以有'id'主键...不知道。

也尝试过:  ctx.meta(DSL.table(“ tableName”))。getPrimaryKeys()或 ctx.meta(DSL.tableByName(“ tableName”)...向我返回空列表

1 个答案:

答案 0 :(得分:1)

  

返回null:/(也尝试过getIdentity())

调用DSL.table(Name)时,您正在动态创建表元数据。您提供的唯一元数据是(限定的)表名。您没有提供任何列信息,更不用说约束信息了,因此您不能真正期望jOOQ神奇地“知道”某处应该有一个主键。

  

在调用getPrimaryKey之前,我将执行所有查询:

在查询主键之前是否要使用相同名称创建表并不重要。就所有jOOQ所知,您创建的该表元信息是一个没有名称/列/约束的表。

  

还尝试过:ctx.meta(DSL.table(“ tableName”))。getPrimaryKeys()或ctx.meta(DSL.tableByName(“ tableName”)...向我返回空列表

我可以看到这看起来令人困惑。与调用ctx.meta()(可能在这里需要)相反,然后查询表,ctx.meta(Table...)只是将参数表的元信息包装在org.jooq.Meta中,而无需连接数据库。