我正在使用Hibernate 4.1和Annotations进行从Java到DB的映射。
我有超类,其属性使用@MappedSuperClass
进行映射。
这个类有许多子类,但有些属性对某些子类无效,因此我不想将它们映射到这些子类的数据库。
有没有办法实现这个目标?
另外,我不确定这是否是正确的设计,只有超类的属性子集适用于子类?如果有人能给我一个合理的理由,我愿意改变设计。
那就是说,我仍然有兴趣知道原始问题是否可以使用JPA / Hibernate解决。
先谢谢。
答案 0 :(得分: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 {}