package com.ada.data.entity;
import java.io.Serializable;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
@MappedSuperclass
public class NumEntity<NUM extends Number> implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private NUM id;
public NUM getId() {
return id;
}
public void setId(NUM id) {
this.id = id;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
NumEntity other = (NumEntity) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
package com.tongna.rest.apps;
import com.ada.data.entity.NumEntity;
public class A extends NumEntity<Long> {
}
A a = new A();
a.setId(1l);
Class<?> ccc = a.getClass().getMethod("getId").getReturnType();
System.out.println(ccc);
System.out.println(a.getId().getClass());
java泛型不是计算运行时的数据类型。
所以在使用BeanUtils.copyProperties(source, result);的时候id不能拷贝。