@MappedSuperclass
用在父類上面。當這個類肯定是父類時,加此標注。如果改成@Entity,則繼承后,多個類繼承,只會生成一個表,而不是多個繼承,生成多個表。
例子:
@MappedSuperclass的用法 用在實體的繼承過程中的父類上; 父類Cat Java代碼 package com.xj.model; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.MappedSuperclass; @MappedSuperclass public class Cat { private Long id; private String name; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } package com.xj.model; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.MappedSuperclass; @MappedSuperclass public class Cat { private Long id; private String name; @Id @GeneratedValue public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 子類1 BeijingCat Java代碼 package com.xj.model; import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name="t_beijingcat") public class BeijingCat extends Cat { private String beijing; public String getBeijing() { return beijing; } public void setBeijing(String beijing) { this.beijing = beijing; } } package com.xj.model; import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name="t_beijingcat") public class BeijingCat extends Cat { private String beijing; public String getBeijing() { return beijing; } public void setBeijing(String beijing) { this.beijing = beijing; } } 子類2 ShanghaiCat Java代碼 package com.xj.model; import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name="t_shanghaiCat") public class ShanghaiCat extends Cat { private String shanghai; public String getShanghai() { return shanghai; } public void setShanghai(String shanghai) { this.shanghai = shanghai; } } package com.xj.model; import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name="t_shanghaiCat") public class ShanghaiCat extends Cat { private String shanghai; public String getShanghai() { return shanghai; } public void setShanghai(String shanghai) { this.shanghai = shanghai; } } 結果生成 兩張表t_beijingcat、 t_shanghaicat 如果不用@MappedSuperclass 而用@Entity替換的話,只會生成一張cat表,字段有:id,name,shanghaicat,bejingcat |