Hibernate PersistenceSet和Lombok EqualsAndHashCode问题

我有一个实体,假设一个使用龙目岛注释的物品 @EqualsAndHashCode(callSuper = true)会自动生成equals()hashCode()方法。 实体放在HashSet集合中。

问题是,当我从数据库(Spring JPARepository和Hibernate)PersistentSet代理获取HashSet中的项目时,以及我使用时, Lombok @EqualsAndHashCode 方法persistentSet.contains(object)返回false。当我的hashCode()返回1或其他值但没有Lombok 自动生成的方法时,它可以正常工作-> persistentSet.contains(object)返回true。 Lombok自动生成的hashCode()的其他功能似乎也不错,因为它会返回会话中给定对象的常量值。所以我迷路了。

也许有人知道我们在这里错了吗??

版本:
休眠状态:5.3.9.Final
龙目岛:1.18.10
数据库:MySQL
春季:5.1.9。发布

mfpaaa 回答:Hibernate PersistenceSet和Lombok EqualsAndHashCode问题

我找到了一个原因。对象属性之一具有@PostLoad批注。 调用“ persistentSet” .contains(object)时,必须在@PostLoad带注释的属性初始化之前计算hascode。

本文链接:https://www.f2er.com/3165490.html

大家都在问