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()返回此对象的类对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值