【发布时间】:2020-04-14 16:32:50
【问题描述】:
我正在使用 jOOQ 和 Oracle DB,需要获取记录的 rowid。
是否可以在生成的 jOOq 记录中包含 rowid?
【问题讨论】:
我正在使用 jOOQ 和 Oracle DB,需要获取记录的 rowid。
是否可以在生成的 jOOq 记录中包含 rowid?
【问题讨论】:
jOOQ 3.12 引入了 Table.rowid() 和 #7885,因此,这是完成您想做的事情的必要基础设施。但是,现在(从 jOOQ 3.12 开始),通常无法向代码生成器或 UpdatableRecord 表明存在这样一个人为的 ROWID 列。待处理的功能请求包括:
根据您要执行的操作,您可以编写以 1:1 的比例表示您的表的视图,将 ROWID 列添加到每一行。使用syntheticPrimaryKeys 和其他代码生成选项,您可以使这些视图再次看起来像您的基表,代码生成器。
您还可以扩展jOOQ-meta 中的类以在每个生成的记录上生成一个合成的ROWID 列,如果需要,使用overridePrimaryKeys 告诉代码生成器ROWID 是主键,而不是实际的主键,如果这是你想要的。当然,你必须确保你永远不会写到那个专栏......
除此之外,您可以在所有手动构造的查询中手动获取Table.rowid()。不过,它们将与您的 UpdatableRecord 实例分开。您可以使用 ResultQuery.fetchMap() 方法来生成 rowid 和记录之间的映射。
【讨论】:
jOOQ-meta 类以将 ROWID 信息添加到每个生成的记录中,见上文。