1

我正在学习 Hinbernate,所以如果我可以将两个类映射到一个 DB 表,那么一个想法就通过了。

前任 :

Class Developer {
    String name;
}

Class Manager {
    String name;
}

虽然这两个类都映射到一个表,但假设名称为 Employee,其中一列是 String 数据类型。

Hibernate 是否能够根据我用于创建的类在表中创建行。还是您认为应该有一个鉴别器列来区分类别?

注意:类之间没有继承关系,它们是分开的。

4

2 回答 2

1

使用xml映射文件时,只需创建两个映射文件Developer.hbm.xml和Manager.hbm.xml,它们都引用同一个数据库表。这样可行。

问题是,您必须确保仅将表行加载为 Developer 或 Manager,但不能同时加载两者。例如,如果您使用session.createQuery("from Developer")and加载它们session.createQuery("from Manager"),那么您在会话缓存中有两次相同的行。如果先修改更新Developer,再修改更新Manager中的同一行,Developer中的修改丢失,会话缓存不一致。

因此,鉴别器行不是绝对必要的,但强烈推荐。

于 2012-05-22T09:04:55.733 回答
0

好吧,考虑数据库模式,而不是您的对象模型。给定表中的一条记录,任何人(无论是您还是 Hibernate)怎么能说出它实际上是哪个实体?

您将需要引入一些类层次结构并通过添加鉴别器列来指定类型或将这些实体映射到不同的表中来使用SINGLE_TABLE继承。

于 2012-05-22T08:56:30.730 回答