繁体   English   中英

在生成的 jOOQ 记录中包含 rowid

[英]Include rowid in generated jOOQ Record

我在 Oracle DB 中使用 jOOQ,需要获取记录的 rowid。

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

jOOQ 3.12 中的可用内容

jOOQ 3.12 引入了Table.rowid()#7885 ,因此,做你想做的事情的必要基础设施。 但是,现在(从 jOOQ 3.12 开始),通常无法向代码生成器或UpdatableRecord表明存在这样一个人工ROWID列。 待处理的功能请求包括:

  • #6168添加设置以使用 Table.rowid() 而不是主键执行 UpdatableRecord 操作
  • #8388添加代码生成选项以使所有记录均可更新记录

解决方法

根据您尝试执行的操作,您可以编写以 1:1 为基础表示您的表的视图,将ROWID列添加到每一行。 使用syntheticPrimaryKeys和其他代码生成选项,您可以使这些视图在代码生成器中再次看起来像您的基表。

您还可以扩展jOOQ-meta的类以在每个生成的记录上生成一个合成ROWID列,如果需要,使用overridePrimaryKeys告诉代码生成器ROWID是主键,而不是实际的主键,如果这是什么你要。 当然,你必须确保你永远不会写信给那个专栏......

除此之外,您可以在所有手动构建的查询中手动获取Table.rowid() 不过,它们将与您的UpdatableRecord实例分开。 您可以使用ResultQuery.fetchMap()方法来生成ResultQuery.fetchMap()和记录之间的映射。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM