Hibernate PersistenceSet和Lombok EqualsAndHashCode问题
我有一个实体,比如说一个使用Lombok注释的项Hibernate PersistenceSet和Lombok EqualsAndHashCode问题,hibernate,hashset,hashcode,lombok,persistent-set,Hibernate,Hashset,Hashcode,Lombok,Persistent Set,我有一个实体,比如说一个使用Lombok注释的项 @EqualsAndHashCode(callSuper=true)自动生成equals()和hashCode()方法。 这些实体被放在哈希集集合中 问题是,当我从DB(SpringJPARepository和Hibernate)获取集合时,我的项目位于HashSet中,并且当我使用Lombok@EqualsAndHashCode时,方法PersistentSet.contains(object)返回false。当myhashCode()返回1或
@EqualsAndHashCode(callSuper=true)
自动生成equals()
和hashCode()
方法。
这些实体被放在哈希集
集合中
问题是,当我从DB(SpringJPARepository
和Hibernate)获取集合时,我的项目位于HashSet
中,并且当我使用Lombok@EqualsAndHashCode
时,方法PersistentSet.contains(object)
返回false
。当myhashCode()
返回1或其他值但没有Lombok自动生成的方法时,它工作正常->persistentSet.contains(object)
返回true
。Lombok自动生成的hashCode()
似乎也很好,因为它返回会话中给定对象的常量值。所以我迷路了
也许有人知道我们这里可能出了什么问题
版本:休眠:5.3.9.最终版本
龙目岛:1.18.10
数据库:MySQL
春天:5.1.9.释放我找到了一个原因。其中一个对象属性具有@PostLoad注释。
调用“persistentSet.”时,必须在初始化@PostLoad注释属性之前计算hascode(对象) 我想我们需要一些(可能是简化的)代码…我不知道这里放了什么代码,因为一切看起来都很好,我的代码中没有什么特别的东西。只是一个带有equals/hascode创建(1)/自动生成(2)方法的类。