是否有一种方法告诉jOOQ使用其表的主键生成equals()和hashCode()?
用例是:
我正在使用Vaadin网格中的记录。我可以刷新网格中的单个项目,但Vaadin使用等于来查找网格中的相应项目。
现在,用户界面中的用户可以选择一条记录并进行编辑。编辑后,我想刷新网格中的记录。据我所见,jOOQ正在将所有字段都用于equals(),并且因为行已更改,equals()不再为真。
答案 0 :(得分:2)
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/