【发布时间】:2011-08-16 13:12:52
【问题描述】:
我正在尝试在 Hibernate 中映射通用类型。我已经搜索过,但找不到明确的答案。帮助将不胜感激。 以下是一些示例类:
public class Person {
...
}
public class PersonA extends Person {
...
}
public class PersonB extends Person {
...
}
public class PersonHolder<P extends Person> {
private P person;
...
}
public class People {
private Map<String, PersonHolder<PersonA> > aPeople;
private Map<String, PersonHolder<PersonB> > bPeople;
...
}
我正在使用本机 Hibernate 映射(XML,无注释)。我已经有 Person、PersonA 和 PersonB 的 Hibernate 映射,但我想知道是否可以在不显式创建通用实现子类的情况下以通用方式映射 PersonHolder 类的实例化,例如:
public class PersonAHolder extends PersonHolder<PersonA> {
...
}
(并将此类映射为普通类)。
谢谢!
【问题讨论】:
-
我最近回答了这个相同(或非常相似)的问题。 [看看它][1]。 [1]:stackoverflow.com/questions/7000428/…
-
注解让调试变得非常简单。您要实现的目标称为多态映射,请参阅stackoverflow.com/questions/979200/hibernate-polymorphism 了解更多信息。您可以使用接口来处理您的 People 类。
-
我没有尝试调试注解,但是一旦你掌握了 XML,XML 调试就相当容易了。 XML 的缺点是解析器错误消息不会告诉您错误在哪个文件中。