使用表主键在Record中生成equals和hashCode

时间:2019-05-28 09:09:14

标签: java jooq

是否有一种方法告诉jOOQ使用其表的主键生成equals()和hashCode()?

用例是:

我正在使用Vaadin网格中的记录。我可以刷新网格中的单个项目,但Vaadin使用等于来查找网格中的相应项目。

现在,用户界面中的用户可以选择一条记录并进行编辑。编辑后,我想刷新网格中的记录。据我所见,jOOQ正在将所有字段都用于equals(),并且因为行已更改,equals()不再为真。

1 个答案:

答案 0 :(得分:2)

作为基于SQL的API的

jOOQ假定记录是没有身份的元组。因此,将一条记录与另一条记录进行比较默认是将r1的每个属性与r2的每个对应属性进行比较。

这与两组操作之间的union或SQL中的distinct操作的工作方式相同,两者都不关心ID,而只关心记录的值。

覆盖POJO和记录的内置equals()hashCode()实现应该很简单。 jOOQ的内部结构不应该依赖于大多数功能的实现(但是,我不记得存在着轻微的错误,这是不正确的)。

我为此创建了功能请求:https://github.com/jOOQ/jOOQ/issues/8705。同时,您将需要使用自定义代码段来滚动自己的代码:https://www.jooq.org/doc/latest/manual/code-generation/codegen-custom-code/