为了账号安全,请及时绑定邮箱和手机立即绑定

如何提取隐藏在HibernateProxy后面的原始实体类?

如何提取隐藏在HibernateProxy后面的原始实体类?

慕妹3242003 2023-08-04 19:11:36
我为我的应用程序创建了一个 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();
}


查看完整回答
反对 回复 2023-08-04
  • 1 回答
  • 0 关注
  • 107 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信