[英]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.