Entity的繼承
@Embeddable
如果只是要重複使用field,並且不介意多一層物件,可使用@Embeddable
@Embeddable
public class RC_OBJ implements Serializable {
private static final long serialVersionUID = 1L;
String rcuser;
String rcdept;
String rcdate;
String rctime;
String rcname;
}
@Entity
@Table(name="BCCNTRL")
public class BCCNTRL implements DeptDocument, ExecuteDocument {
@Embedded
@AttributeOverrides({ @AttributeOverride(name = "rcuser", column = @Column(name = "RCUSER")),
@AttributeOverride(name = "rcdept", column = @Column(name = "RCDEPT")),
@AttributeOverride(name = "rcdate", column = @Column(name = "RCDATE")),
@AttributeOverride(name = "rctime", column = @Column(name = "RCTIME")),
@AttributeOverride(name = "rcname", column = @Column(name = "RCNAME")), })
RC_OBJ rc;
}
@MappedSuperclass
如果只是要重複使用field,並且不介意Entity的extends被用掉,可使用@MappedSuperclass
需注意@MappedSuperclass不可與@Entity共用,會報錯:
org.hibernate.AnnotationException: An entity cannot be annotated with both @Entity and @MappedSuperclass
@MappedSuperclass
class HospitalBaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
/** 醫院編號(PK) */
@Id
@GeneratedValue
protected int hno;
/** 醫院代碼(UK) */
protected String hcode;
}
@Entity
@Table(name = "hospital")
public class Hospital extends HospitalBaseEntity {
private static final long serialVersionUID = 1L;
public Hospital copy() {
return ReflectionTool.copyEntity(this);
}
}
@Inheritance
尚未實際用過