@MappedSuperclass用法


@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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM