我可以制作类型安全的异构容器,就像Bloch的Effective Java与JPA一样吗?

时间:2012-08-13 16:58:54

标签: jpa type-erasure type-safety heterogeneous

我需要的是像

 public class Catalog {

     private Map<Class<?>, Object> options = new HashMap<Class<?>, Object>();

     public void addOption(Class><T>, T Option) {
            ...
     }

     public <T> T getSelectedOption() {
            ...
     }

 }

这是一个通用的选项目录,应该代表一组可供选择的备选方案。这些可能是TravelDestination,HotelCategory,CarBrand等。

如何在保留所需的类型信息的同时将此构造保存到may数据库中 用于在运行时使用JPA / Hibernate重建内部映射?

作为附加边界条件:

由于Catalog应该以其现实生活中的对应物为模型,因此我想避免使用抽象目录,因此为TravelDestinationCatalog或HotelRoomCatalog等每个替代品引入一个新的子类,使目录defacto同质化。

1 个答案:

答案 0 :(得分:1)

为什么你想要一个带有对象的Map,由他们的类识别?最多可以在目录中为每个类放置一个Object。为什么不为您的目录添加ManyToOne关系。这样,如果需要,您仍然可以保留延迟关联,它更灵活,更容易。