我為我的應(yīng)用程序創(chuàng)建了一個(gè) Mapper 類,它提供了一個(gè)簡單的使用界面:Destination destination = mapper.map(sourceObject, Destination.class);//or justmapper.map(sourceObject, destination);Mapper 實(shí)例包含由 ClassPair 映射的轉(zhuǎn)換器的映射:class ClassPair() { private Class sourceType; private Class destinationType; ...}class Mapper { private Map<ClassPair, Converter> converters; ...}問題是,當(dāng)我嘗試將持久實(shí)體轉(zhuǎn)換為另一種類型時(shí),我的映射器因 NPE 失敗。這是因?yàn)槌志没瘜?shí)體的類型不是該實(shí)體的原始類,而是生成的 HibernateProxy 實(shí)現(xiàn)。我嘗試過使用Hibernate.unproxy()方法,但它在所有應(yīng)用程序中都占有一席之地。它確實(shí)有效,但是我認(rèn)為這是一個(gè)非常糟糕的做法。因此,我需要以某種方式確定實(shí)體的原始類。
1 回答

守著一只汪
TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
每個(gè)HibernateProxy
實(shí)例都可以訪問其底層延遲初始化處理程序,該處理程序具有所需的信息。
if (value instanceof HibernateProxy) { return ((HibernateProxy) value).getHibernateLazyInitializer().getPersistentClass(); }
添加回答
舉報(bào)
0/150
提交
取消