簡體   English   中英

Orika映射到Hibernate實體引發異常

[英]Orika mapping to Hibernate entity throws exception

我正在嘗試將DTO映射到其對應的Hibernate實體。 我從Hibernate會話中加載實體,並立即執行映射。

這是我得到的例外:

javassist.NotFoundException: my.pkg.MyEntity$$EnhancerByCGLIB$$a7950497
     at javassist.ClassPool.get(ClassPool.java:436)
     at ma.glasnost.orika.impl.generator.JavassistCompilerStrategy.assureTypeIsAccessible(JavassistCompilerStrategy.java:181)
     at ma.glasnost.orika.impl.generator.MapperGenerator.build(MapperGenerator.java:56)
     at ma.glasnost.orika.impl.DefaultMapperFactory.buildMapper(DefaultMapperFactory.java:1057)
     at ma.glasnost.orika.impl.DefaultMapperFactory.lookupMapper(DefaultMapperFactory.java:599)
     at ma.glasnost.orika.impl.DefaultMapperFactory.lookupMapper(DefaultMapperFactory.java:566)
     at ma.glasnost.orika.impl.MapperFacadeImpl.resolveMapper(MapperFacadeImpl.java:516)
     at ma.glasnost.orika.impl.MapperFacadeImpl.resolveMappingStrategy(MapperFacadeImpl.java:199)
     at ma.glasnost.orika.impl.MapperFacadeImpl.map(MapperFacadeImpl.java:337)
     at ma.glasnost.orika.impl.MapperFacadeImpl.map(MapperFacadeImpl.java:357)
     at ma.glasnost.orika.impl.ConfigurableMapper.map(ConfigurableMapper.java:148)

對我的工廠生成配置HibernateUnenhanceStrategy,這是我的映射是這樣的:

public class MyMapper extends ConfigurableMapper
{
    @Override
    protected void configureFactoryBuilder(DefaultMapperFactory.Builder factoryBuilder)
    {
        factoryBuilder.compilerStrategy(new JavassistCompilerStrategy());
        factoryBuilder.unenhanceStrategy(new HibernateUnenhanceStrategy());
    }

    @Override
    protected void configure(MapperFactory factory)
    {
        factory.classMap(MyEntity.class, MyDTO.class);
    }
}

我現在的解決方法是在會話加載和使用Orika映射之間不增強實體本身,但是我真的不想這么明確。 我該如何工作?

盡管這個問題已經很老了,但是如果有人遇到同樣的問題,這是我的解決方案。

似乎HibernateUnenhancercerStrategy並未應用於目標對象(代理)。

但是,有一個簡單的解決方法。 MapperFacade展示了一個重寫的map()方法,該方法允許傳遞目標類型:

    <S, D> void map(S sourceObject, D destinationObject, Type<S> sourceType, Type<D> destinationType);

因此,您的通話看起來類似於:

mapperFacade.map(myDto, myProxiedEntity,
             null, TypeFactory.valueOf(MyEntity.class));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM