使用此:
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”)...向我返回空列表
答案 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
中,而无需连接数据库。