欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?

发布时间:2025/3/20 编程问答 32 豆豆
生活随笔 收集整理的这篇文章主要介绍了 java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

我有一个BaseEntity类,它是我的应用程序中所有JPA实体的超类.

@MappedSuperclass

public abstract class BaseEntity implements Serializable {

private static final long serialVersionUID = -3307436748176180347L;

@Id

@GeneratedValue(strategy = GenerationType.IDENTITY)

@Column(name = "ID", nullable=false, updatable=false)

protected long id;

@Version

@Column(name="VERSION", nullable=false, updatable=false, unique=false)

protected long version;

}

每个JPA实体都从BaseEntity扩展并继承BaseEntity的id和version属性.

在BaseEntity中实现equals()和hashCode()方法的最佳方法是什么? BaseEntity的每个子类都将从BaseEntity继承equals()和hashCode()行为.

我想做这样的事情:

public boolean equals(Object other){

if (other instanceof this.getClass()){ //this.getClass() gives class object but instanceof operator expect ClassType; so it does not work

return this.id == ((BaseEntity)other).id;

} else {

return false;

}

}

但是instanceof运算符需要classtype而不是class对象;那是:

> if(其他instanceof BaseEntity)

这将起作用,因为BaseEntity在这里是classType

> if(this.getClass的其他实例)

这不起作用,因为this.getClass()返回此对象的类对象

总结

以上是生活随笔为你收集整理的java baseentity_如何在JPA的BaseEntity中实现equals()和hashcode()方法?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。