我有一个BaseEntity
类,它是应用程序中所有JPA实体的父类(super class)。
@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
扩展而来,并继承id
的version
和BaseEntity
属性。在
equals()
中实现hashCode()
和BaseEntity
方法的最佳方法是什么? BaseEntity
的每个子类都将继承equals()
的hashCode()
和BaseEntity
行为。我想做这样的事情:
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(other instanceof BaseEntity)
这将作为BaseEntity是classType在这里
if(other instanceof this.getClass)
这将不起作用,因为
this.getClass()
返回this
对象最佳答案
你可以做
if (this.getClass().isInstance(other)) {
// code
}