One: single_table inheritance Policy
Animal.java
Import java.io.Serializable;
Import Javax.persistence.DiscriminatorColumn;
Import Javax.persistence.DiscriminatorValue;
Import javax.persistence.Entity;
Import Javax.persistence.GeneratedValue;
Import Javax.persistence.Id;
Import javax.persistence.Inheritance;
Import Javax.persistence.InheritanceType;
/**
* The single table inherits a * */
@Entity
@Inheritance (strategy=inheritancetype.single_table)//specified as single table inheritance
@ Discriminatorcolumn (name= "Animaltype")//Identification field definition
@DiscriminatorValue ("A")//identity of the class public
class Animal {
@Id
@GeneratedValue
private int Id;
private String name;
Private String sex;
}
Bird.java
Import Javax.persistence.DiscriminatorValue;
Import javax.persistence.Entity;
@Entity
@DiscriminatorValue ("B") public
class Bird extends animal{
private int height;
}
Pig.java
Import Javax.persistence.DiscriminatorValue;
Import javax.persistence.Entity;
@Entity
@DiscriminatorValue ("P") public
class Pig extends Animal {
private int weight;
}
The final table structure
Two Join mappings
Animal.java
Import java.io.Serializable;
Import Javax.persistence.DiscriminatorColumn;
Import Javax.persistence.DiscriminatorValue;
Import javax.persistence.Entity;
Import Javax.persistence.GeneratedValue;
Import Javax.persistence.Id;
Import javax.persistence.Inheritance;
Import Javax.persistence.InheritanceType;
/**
* Join Map
* Parent class, subclass corresponds to different table, only special attributes of its extension exist in subclasses (no attributes of parent class)
*
*
/@Entity @Inheritance ( strategy=inheritancetype.joined)//specified as single-table inherit public
class Animal {
@Id
@GeneratedValue
Private int id;
private String name;
Private String sex;
}
Bird.java
Import javax.persistence.Entity;
@Entity public
class Bird extends Animal {
private int height;
}
The final table structure
Three Table_per_class
Animal.java
Import java.io.Serializable;
Import Javax.persistence.DiscriminatorColumn;
Import Javax.persistence.DiscriminatorValue;
Import javax.persistence.Entity;
Import Javax.persistence.GeneratedValue;
Import Javax.persistence.Id;
Import javax.persistence.Inheritance;
Import Javax.persistence.InheritanceType;
/**
* Table_per_class Policy: Parent class and subclass correspond to different tables, all attributes exist in subclass
* (contains all attributes inherited from parent Class) * */
@Entity
@ Inheritance (strategy=inheritancetype.table_per_class) public
CLASS Animal {
@Id
// @ Generatedvalue (when using Table_per_class, cannot use generatedvalue)
private int id;
private String name;
Private String sex;
}
Bird.java
Import javax.persistence.Entity;
@Entity public
class Bird extends Animal {
private int height;
}
The final table structure