單一實體對應多張資料表,常見於字典表、擴充欄位、歷史資料分離等情境。EJB 3.0 提供 @SecondaryTable 與 @SecondaryTables 註解支援。
@SecondaryTable(
name = "GENDER",
catalog = "",
schema = "",
join = @JoinColumn(name = "GENDER_ID"),
uniqueConstraints = {}
)
@Entity
@Table(name = "STUDENT")
@SecondaryTables({
@SecondaryTable(name = "GENDER", join = @JoinColumn(name = "GENDER_ID"))
})
public class Student implements Serializable {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private Name name; // 依賴值物件
@Column(name = "gender", secondaryTable = "GENDER")
public String getGender() { return gender; }
// ... 其他屬性
}
join 屬性指定主表與副表的關聯欄位(外鍵)。secondaryTable 明確宣告該欄位對應副表。@SecondaryTable 組合映射。
StudentDAO dao = (StudentDAO) ctx.lookup(StudentDAO.class.getName());
dao.create("晁", "岳攀", "8", "smallnest@kuaff.com", "男");
// 查詢時自動 JOIN 兩張表