当前位置: 首页 > 知识库问答 >
问题:

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

屠华辉
2023-03-14

使用此选项:

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主键自动递增非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个答案

连乐
2023-03-14

返回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。

 类似资料:
  • 我注意到,如果没有where(),returning()操作不可用。这是故意的吗? 这项工作: 这不起作用: 我应该考虑这个“黑客”吗?

  • 数据库是PostgreSQL 10,JOOQ版本是3.10.8。 是我在JOOQ上做错了什么,还是这是一个问题,可能已经在一些新版本中修复了?

  • 我如何用JOOQ表示以下PostgreSQL语法? Jooq的函数需要类型作为其参数,但是函数返回类型?

  • 我使用JOOQ查询多对多关系,需要将一个条目的多个结果映射到单个对象中。为此,我使用唯一标识符将结果分组,并从每个分组的结果中提取所需的数据。对于多对多数据,我得到所有可用值,对于正常数据,我只使用第一个条目的数据: 现在,我虽然每个条目可以有多个组,但它不需要有任何组,以下将是一个有效的条目,无需设置任何组: 奇怪的是,我注意到在这种情况下返回一个包含的List,而不是一个空列表。 这是有意的吗

  • 我有以下记录是通过一个带有几个连接的查询得到的: 现在,当我尝试检索不在结果中的特定列时: 其中生成具有以下详细信息的静态编程语言代码: 我希望得到null。但是,返回了错误的id值(zkn_zaak.id)。 我错过了什么?jOOQ不应该有足够的信息(表和字段名)来从记录中检索正确的列吗? =======更新============= 从代码来看,这似乎是预期的行为,并且已经在例如。https:

  • 我正在尝试使用具有唯一约束“phone\u number\u key”的jooq和table实现save或update方法 我的代码: 但我得到了例外 错误:重复的键值违反唯一约束“phone_number_key”详细信息:key(“phoneNumber”)=(99999999)已存在。 我使用“.onDuplicateKeyUpdate()”方法时遇到了相同的错误 我使用postgres d