我为我的应用程序创建了一个 Mapper 类,它提供了一个简单的使用界面:Destination destination = mapper.map(sourceObject, Destination.class);//or justmapper.map(sourceObject, destination);Mapper 实例包含由 ClassPair 映射的转换器的映射:class ClassPair() { private Class sourceType; private Class destinationType; ...}class Mapper { private Map<ClassPair, Converter> converters; ...}问题是,当我尝试将持久实体转换为另一种类型时,我的映射器因 NPE 失败。这是因为持久化实体的类型不是该实体的原始类,而是生成的 HibernateProxy 实现。我尝试过使用Hibernate.unproxy()方法,但它在所有应用程序中都占有一席之地。它确实有效,但是我认为这是一个非常糟糕的做法。因此,我需要以某种方式确定实体的原始类。
1 回答
守着一只汪
TA贡献1872条经验 获得超3个赞
每个HibernateProxy
实例都可以访问其底层延迟初始化处理程序,该处理程序具有所需的信息。
if (value instanceof HibernateProxy) { return ((HibernateProxy) value).getHibernateLazyInitializer().getPersistentClass(); }
添加回答
举报
0/150
提交
取消