@MappedSuperclass的用法

實體類baseEntity.java

package com.rock.cft.hibernate;

import java.util.Date;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

//@MappedSuperclass 用在父類上面。當這個類肯定是父類時,加此標註。如果改成@Entity,則繼承後,多個類繼承,只會生成一個表,而不是多個繼承,生成多個表
@MappedSuperclass
publicabstractclassBaseEntity{
privateInteger id;// 數據庫主鍵
privateDate creationTime;//創建時間
privateDate modificationTime;//修改時間

@Id
@GeneratedValue(strategy =GenerationType.AUTO)
publicInteger getId(){
return id;
}
publicvoid setId(Integer id){
this.id = id;
}
publicDate getCreationTime(){
return creationTime;
}
publicvoid setCreationTime(Date creationTime){
this.creationTime = creationTime;
}
publicDate getModificationTime(){
return modificationTime;
}
publicvoid setModificationTime(Date modificationTime){
this.modificationTime = modificationTime;
}


}


實體類Test_No1.java

package com.rock.cft.test.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import com.rock.cft.hibernate.BaseEntity;

@Entity
@Table(name="test_no2")
publicclassTest_No1extendsBaseEntityimplementsSerializable{


privateString name;
privateint age;

publicString getName(){
return name;
}
publicvoid setName(String name){
this.name = name;
}
publicint getAge(){
return age;
}
publicvoid setAge(int age){
this.age = age;
}

}


實體類Test_NO2.java

package com.rock.cft.test.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;

import com.rock.cft.hibernate.BaseEntity;

@Entity
@Table(name="test_no2")
publicclassTest_NO2extendsBaseEntityimplementsSerializable{


privateDate testBri;

privateString testAdr;

publicDate getTestBri(){
return testBri;
}
publicvoid setTestBri(Date testBri){
this.testBri = testBri;
}
publicString getTestAdr(){
return testAdr;
}
publicvoid setTestAdr(String testAdr){
this.testAdr = testAdr;
}




}

這樣在生成表的時候只生成了:test_no1、test_no2兩張表,而且兩張表中都含有id、creationTime、modificationTime三個屬性
但是如果把@MappedSuperclass換成@Entity那麼就會另外在生成一張baseEntity的表


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章