在生成的jOOQ记录中包含rowid

时间:2019-12-23 11:18:59

标签: java sql oracle jooq

我正在将jOOQ与Oracle DB配合使用,并且需要获取记录的rowid。

是否可以在生成的jOOq记录中包括该rowid?

1 个答案:

答案 0 :(得分:2)

jOOQ 3.12中提供了什么

jOOQ 3.12在Table.rowid()#7885中引入了#6168,因此,它是完成您想要做的事情的必要基础结构。但是,目前(从jOOQ 3.12开始),无法向代码生成器或UpdatableRecord总体上指示存在这样的虚假ROWID列。待处理的功能请求包括:

  • #8388添加设置以使用Table.rowid()而不是主键执行UpdatableRecord操作
  • syntheticPrimaryKeys添加代码生成选项以使所有记录都变为UpdatableRecords

解决方法

根据要执行的操作,您可以编写以1:1为基础表示表的视图,并将ROWID列添加到每一行。使用Table.rowid()和其他代码生成选项,对于代码生成器,您可以使这些视图再次看起来像基表。

您还可以扩展jOOQ-meta中的类,以在每个生成的记录上生成一个合成的ROWID列,并且如果需要,可以使用overridePrimaryKeys告诉代码生成器{{1 }}是主键,而不是实际的主键(如果需要的话)。当然,您必须确保永远不会写该列...

除此之外,您还可以在所有手动构建的查询中手动获取per the documentation。不过,它们将与您的ROWID实例分开。您可以使用UpdatableRecord方法在行标识符和记录之间产生映射。