0

我正在使用 Hibernate 4.1 和 Annotations 从 Java 映射到 DB。

我有超类,其属性使用@MappedSuperClass.

此类有许多子类,但某些属性对某些子类无效,因此我不想将它们映射到这些子类的数据库。

有没有办法做到这一点?

另外,我不确定这是否是正确的设计,只有超类的属性子集适用于子类?如果有人能给我一个正当的理由,我也愿意改变设计。

也就是说,我仍然想知道原始问题是否可以使用 JPA/Hibernate 解决。

提前致谢。

4

1 回答 1

0

我不确定是否有办法用 Hibernate 做你想做的事,但听起来真正的问题在于你的设计/类结构。简而言之,不适用于所有子类的字段可能不应该存在于超类中。

您应该将字段移动到它们应用的子类,或者使用这些字段创建一个新的中间类并扩展它。例如,考虑这个类结构:

class Animal {
  float weight;
  Color[] hairColors;
}
class Dog extends Animal {}
class Fish extends Animal {}

hairColors不适用于Fish. 我们应该将它移动到Dog或创建一个新的中间类,例如Mammal

class Animal {
  float weight;
}
class Mammal extends Animal {
  Color[] hairColors;
}
class Dog extends Mammal {}
class Fish extends Animal {}
于 2013-07-19T17:10:57.640 回答