在我的java中,我有一个泛型类(可以是抽象或非抽象的方式,但不映射到数据库中的表)。它有一个或多个变量,这对每个类都是通用的。示例:在Hibernate中继承映射策略
public class GenericThing {
private Date createDate;
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date dt) {
createDate = dt;
}
}
这很有用,因为字面上数据库中的每个表都具有CREATE_DATE列。
在这种情况下,在Hibernate中使用的正确的继承策略是“每个具体类的表”。但是,这是“坏”,他们说,因为每个表都需要相同的列,并且如果更改该列名(CREATE_DATE),则必须更改每个表的列名。那么,显然这是真的,但是有什么选择呢?很显然,我希望数据库中的每个表都存储创建日期,但我不希望整个数据库中的每个对象都在一个表中,这样就排除了(据我所知)所有其他映射策略,正确的?
每个子类的表似乎假定父类将在数据库中。但正如你在我的例子中看到的,父类不是一个实际的数据库对象。它是一个抽象类,它包含几个对所有具体类都通用的字段。它不映射到任何特定的表。 – pete 2014-09-05 20:35:11
我想我可以改变数据库的结构,使其在表中保存父类。但是,这不需要每次我们想要访问任何物品的创建日期时进行内部连接吗? – pete 2014-09-05 21:23:54
现在你让我困惑。你不想在每个表中重复同一列,你不想在同一个表中保存整个层次结构,并且你不希望分开保存公共列并进行连接?那么你究竟期待什么?无论如何,请阅读https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/inheritance.html,然后选择您的选项。 – kaqqao 2014-09-06 13:03:08