標籤:
實體類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
public abstract class BaseEntity {
private Integer id;// 資料庫主鍵
private Date creationTime;//建立時間
private Date modificationTime;//修改時間
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Date getCreationTime() {
return creationTime;
}
public void setCreationTime(Date creationTime) {
this.creationTime = creationTime;
}
public Date getModificationTime() {
return modificationTime;
}
public void 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")
public class Test_No1 extends BaseEntity implements Serializable {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void 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")
public class Test_NO2 extends BaseEntity implements Serializable {
private Date testBri;
private String testAdr;
public Date getTestBri() {
return testBri;
}
public void setTestBri(Date testBri) {
this.testBri = testBri;
}
public String getTestAdr() {
return testAdr;
}
public void setTestAdr(String testAdr) {
this.testAdr = testAdr;
}
}
這樣在產生表的時候只產生了:test_no1、test_no2兩張表,而且兩張表中都含有id、creationTime、modificationTime三個屬性
但是如果把@MappedSuperclass換成@Entity那麼就會另外在產生一張baseEntity的表
@MappedSuperclass的用法