JPA基礎(十四):JPA中的繼承映射關係

來源:互聯網
上載者:User

Employee.java:(基類)

 1 @Entity
2 @Inheritance(strategy=InheritanceType.SINGLE_TABLE)//選擇繼承策略
3 @DiscriminatorColumn(name="type")//配置鑒別器
4 @DiscriminatorValue("0")//設定鑒別器值
5 public class Employee {
6 @Id
7 @GeneratedValue
8 private Integer id;
9 private String name;
10 public Integer getId() {
11 return id;
12 }
13 public void setId(Integer id) {
14 this.id = id;
15 }
16 public String getName() {
17 return name;
18 }
19 public void setName(String name) {
20 this.name = name;
21 }
22 }

其中@Inheritance(strategy=InheritanceType.SINGLE_TABLE)//選擇繼承策略 可以選擇多種策略,如所示:

  • JOINED:繼承的子類各自產生一張表
  • SINGLE_TABLE:只產生一張表,用一個欄位當鑒別器
  • TABLE_PER_CLASS:每個類都生產一張表,包括基類

 

Skiller.java(繼承自Employee.java)

 1 @Entity
2 @DiscriminatorValue("1")
3 public class Skiller extends Employee {
4 private String skill;
5
6 public String getSkill() {
7 return skill;
8 }
9
10 public void setSkill(String skill) {
11 this.skill = skill;
12 }
13 }

Sales.java(繼承自Employee.java)

 1 @Entity
2 @DiscriminatorValue("2")
3 public class Sales extends Employee {
4 private String sell;
5 public String getSell() {
6 return sell;
7 }
8 public void setSell(String sell) {
9 this.sell = sell;
10 }
11 }

測試:

 1     @Test
2 public void save(){
3 EntityManagerFactory factory=Persistence.createEntityManagerFactory("sample");
4 EntityManager em=factory.createEntityManager();
5 em.getTransaction().begin();
6 Employee p1=new Employee();
7 p1.setName("Jim");
8 Skiller p2=new Skiller();
9 p2.setName("Hanson");
10 p2.setSkill("skill");
11 Sales p3=new Sales();
12 p3.setName("Brian");
13 p3.setSell("sale");
14 em.persist(p1);
15 em.persist(p2);
16 em.persist(p3);
17 em.getTransaction().commit();
18 em.close();
19 factory.close();
20 }

開啟資料庫:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.