0

我有两个实体,一个是项目,另一个是水果。我想首先作为另一个的超类来实现,并且我希望超类的所有参数都被它的子类继承。

我还希望在构建数据库时将该超类表及其所有属性绑定到子类表,即,如果我创建更多子类,我不希望所有子类都写入应该在超类中的值。

我应该如何实现这一目标?

项目.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
   }

水果.java

   @Entity
   @PrimaryKeyJoinColumn(name="ART_ID")
   public class Fruit extends Item implements java.io.Serializable{
      // here goes proper values of this class 
   }

数据库.db

   create table Item
   (
    ITEM_ID          bigint not null auto_increment,
    ITEM_NAME         varchar(25) not null,
    );

   create table Fruit
    (
    FRUIT_DATEFROZEN date,
    );

);
4

1 回答 1

1

我为我拥有的复杂继承树实现了类似以下的内容。

@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,
);
于 2012-08-29T22:18:39.867 回答