实体除了可以继承自实体外,也可以继承自没有标注@Entity普通的Java类。非实体类中的属性将不被持久化,而继承它的子类中,属性也将不被持久化。
例如有这样一个EmployeeEO实体类,继承自普通的Java类BaseEO,代码如下所示。
BaseEO类(非实体)
public class BaseEO implements Serializable {
private int count;
public void addCount(){
count ++;
}
}
继承它的子类实体EmployeeEO为实体类,代码如下。
@Entity
@Table(name = "tb_employee")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="employee_type",discriminatorType=DiscriminatorType.STRING)
@DiscriminatorValue("employee")
public class EmployeeEO extends BaseEO implements Serializable {
private Integer id;
private String name;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
/**子类实体类中的属性,默认映射为name字段*/
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**其父类为非实体类,其继承的方法默认为非持久化。相当于标注了
@Transient
public void addCount(){
count ++;
}
*/
}