我有两个实体,一个是Item,另一个是Fruit。我想首先实现另一个的超类,我希望超类中的所有参数都由其子类继承。
同样我想要,在构建数据库时将该超类表及其所有属性绑定到子类表,即,如果我创建了更多的子类,我不希望所有这些都写入应该包含的值超级。
我该如何实现这个目标?
item.java
@MappedSuperclass
@DiscriminatorColumn(name="Item")
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class Item implements java.io.Serializable
{
// here goes all values of the class Item
}
fruit.java
@Entity
@PrimaryKeyJoinColumn(name="ART_ID")
public class Fruit extends Item implements java.io.Serializable{
// here goes proper values of this class
}
database.db
create table Item
(
ITEM_ID bigint not null auto_increment,
ITEM_NAME varchar(25) not null,
);
create table Fruit
(
FRUIT_DATEFROZEN date,
);
);
答案 0 :(得分:1)
我为complicated inheritance tree实现了以下内容。
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
public abstract class Item
{
@Id
Long id;
String name;
}
@DiscriminatorValue("FRUIT")
@SecondaryTable( name = "fruit" )
public class NumberAnswer extends Item
{
@Column(table = "fruit")
Date frozen;
}
create table Item
(
ID bigint not null auto_increment,
NAME varchar(25) not null,
);
create table Fruit
(
ID bigint not null
FROZEN date,
);