项目中我们经常把实体类公共的属性抽取出来(主键ID,创建时间crateTime等),抽取成一个BasedModel,然后让有需要的实体类去继承。
package com.test.demo.model;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import java.io.Serializable;
/**
* 公共类
*/
@MappedSuperclass
public class BasedModel implements Serializable {
private String id;
@Id
@Column(name = "ID")
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid",strategy="uuid")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
然后启动时报错,查询出来说的时,没有主键。但是明明继承了公共类,为什么就创建失败了呢!后来才发现,主要原因是,公共类少一个注解
@MappedSuperclass
加上这个注解就ok了!