>>>使用继承的Hibernate示例<<<

时间:2012-08-29 21:24:31

标签: java hibernate

我有两个实体,一个是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,
    );

);

1 个答案:

答案 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,
);