当前位置: 首页 > 知识库问答 >
问题:

Lombok-实现equals和hashcode时使用@data发出警告

公冶同
2023-03-14

我有扩展其他抽象类JPA实体。我想使用@data来避免编写setter和getter,但我的equals和hashcode方法存在。

我得到警告,但我认为我不应该:

server\entity\User.java:20: warning: Generating equals/hashCode implementation but without a call to superclass, even though this class does not extend java.lang.Object. If this is intentional, add '@EqualsAndHashCode(callSuper=false)' to your type.
@Data
^
@Data
@Entity
public class User extends AbstractAuditingEntity implements Serializable {

    ....

    @Override
    public boolean equals(Object o) {
       ...
    }

    @Override
    public int hashCode() {
       ...
    }
}

当我将@equalsandHashCode(callSuper=false)添加到@data中时,我得到:

server\entity\User.java:21: warning: Not generating equals and hashCode: A method with one of those names already exists. (Either both or none of these methods will be generated).
@EqualsAndHashCode(callSuper = false)

共有1个答案

宦书
2023-03-14

@data@tostring@equalsandhashcode@getter@setter@requiredargsconstructor的快捷方式。既然您只想要@getter@setter,为什么不直接使用它们(这将避免您的异常或警告消息),

@Entity
@Getter
@Setter
public class User extends AbstractAuditingEntity implements Serializable 
    ...

}
 类似资料:
  • 生成equals/hashCode实现,但不调用超类,即使这个类没有扩展java.lang.Object。如果这是有意的,请将添加到您的类型中。 是否建议添加注释或?如果不添加,它是还是?

  • 问题内容: 我有一个从其他继承的实体。另一方面,我正在使用lombok项目来减少样板代码,因此我添加了注释。具有继承的注释会产生下一个警告: 生成equals / hashCode实现,但不调用超类,即使该类未扩展java.lang.Object。如果这是故意的,请添加您的类型。 是否建议添加注释或?如果不加它,哪一个是它 还是 ? 问题答案: 该默认值是。如果您不指定它而忽略警告,那就是您得到的

  • 问题内容: 在Hibernate中应如何实现模型类的equals和hashcode?有哪些常见的陷阱?默认实现在大多数情况下是否足够好?使用商务钥匙有什么意义吗? 在我看来,要考虑到延迟获取,ID生成,代理等,在每种情况下都无法正确工作。 问题答案: Hibernate有何时/如何重写一个很好的和长期的描述/ 在文档 要点是,如果您的实体将成为的一部分,或者您要分离/附加其实例,则只需担心它。后者

  • 如果你有如下需求,你必须重载 equals() 和 hashCode() 方法: 想把持久类的实例放入 Set 中(当表示多值关联时,推荐这么做),而且 想重用脱管实例 Hibernate 保证,仅在特定会话范围内,持久化标识(数据库的行)和 Java 标识是等价的。因此,一旦我们混合了从不同会话中获取的实例,如果希望 Set 有明确的语义,就必须实现 equals() 和 hashCode()。

  • 问题内容: 我应该如何实施和在Java下面的类? 问题答案: 在Eclipse中,右键单击->源->生成hashCode(),然后equals()给出以下信息: 我已选择代码作为唯一字段

  • 问题内容: 是否可以使默认的Eclipse“ Generate hashCode()and equals()”使用getter代替字段引用?-即 我可以得到它使用的模板吗? 我正在使用Hibernate,并且使用getter时,仅从LazyLoaded代理对象,而不是从字段引用中。不断更改它很烦人。 显而易见的解决方法是自己创建一个模板或编写一个插件-感觉太过分了。 编辑:看起来这些是不可配置的。