1

我有以下课程:

public abstract class Generic(){
    private int Id;
    ...
}

public class ExtA extends Generic(){
    private Generic fieldA();
    private Generic fieldB();
    ...
}

public class ExtB extends Generic(){
    private Generic fieldA;
    ....
}

public class ExtC extends Generic(){
    ...
}

很抱歉这个模糊的例子。

我试图找到一种方法将这些对象保存到数据库中,但似乎找不到一个好方法。我希望有单独的表ExtA, ExtB, ExtC,然后使用外键来关联包含的字段。我正在使用 MySQL,并使用 Java、Spring、Hibernate。有人可以告诉我一个如何做到这一点的例子,或者给我一些教程吗?

我应该提到我是使用数据库的新手。

4

1 回答 1

2

像这样的东西。我相对确定 Table_Per_Class 策略会让您请求任何“通用”对象并查询它的所有子类表。请记住,如果您这样做,ID 在您的所有子类类型中应该是唯一的。您必须为此制定一个策略,使用正确的注释来告诉 hibernate 要做什么。但与此同时,此示例假定您在保存之前手动分配它。

@Entity
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public abstract class Generic {
   @Id @Column(name="ID")
   private Long id;
   ...
}

@Entity
@Table(name="EXTA")
public class ExtA extends Generic {
   @Column(name="fieldA")
   private Generic fieldA;
}
于 2012-06-12T20:54:22.070 回答