首页 文章

ModelMapper异常 - 无法强制转换为org.modelmapper.internal.Mutator

提问于
浏览
0

我正在接受这个例外的吼叫异常 . 我正在使用modelmapper来转换我的项目中的类 .

Deal和DealDocument类是相同的 . 交易文件类如下:

public class DealDocument extends Deal implements Serializable {

    private static final long serialVersionUID = 12390392L;

}

您认为可能是什么问题?它似乎随机出现,就像它工作正常,但在时间系统内降级

2017-01-31 15:35:45.168 ERROR 21301 --- [http-nio-8080-exec-8] oaccC [ . [ . [/] . [dispatcherServlet]:servlet的[Servlet.service()[dispatcherServlet]在path []的上下文中抛出异常[请求处理失败;嵌套异常是org.modelmapper.MappingException:ModelMapper映射错误:1)使用根本原因java.lang将com.acme.sugoi.marketplace.model.Deal映射到com.acme.sugoi.marketplace.model.DealDocument 1 error]时出错 . ClassCastException异常:org.modelmapper.internal.PropertyInfoImpl $ MethodAccessor不能org.modelmapper.internal.PropertyInfoResolver $ 3.propertyInfoFor被转换为org.modelmapper.internal.Mutator在org.modelmapper.internal.PropertyInfoRegistry.mutatorFor(PropertyInfoRegistry.java:92) (PropertyInfoResolver.java:75)在org.modelmapper.internal.PropertyInfoResolver $ 3.propertyInfoFor(PropertyInfoResolver.java:63)在org.modelmapper.internal.PropertyInfoSetResolver.resolveProperties(PropertyInfoSetResolver.java:146)在org.modelmapper.internal.PropertyInfoSetResolver .resolveProperties(PropertyInfoSetResolver.java:136)在org.modelmapper.internal.PropertyInfoSetResolver.resolveProperties(PropertyInfoSetResolver.java:123)在org.modelmapper.internal.PropertyInfoSetResolver.res olveMutators(PropertyInfoSetResolver.java:91)在org.modelmapper.internal.TypeInfoImpl.getMutators(TypeInfoImpl.java:76)在org.modelmapper.internal.ImplicitMappingBuilder.matchDestination(ImplicitMappingBuilder.java:92)在org.modelmapper.internal.ImplicitMappingBuilder .build(ImplicitMappingBuilder.java:82)在org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:106)在org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:79)在org.modelmapper.internal . MappingEngineImpl.map(MappingEngineImpl.java:99)在org.modelmapper.internal.MappingEngineImpl.map(MappingEngineImpl.java:60)在org.modelmapper.ModelMapper.mapInternal(ModelMapper.java:497)在org.modelmapper.ModelMapper.map (ModelMapper.java:340)在com.acme.sugoi.marketplace.config.MarketPlaceModelMapper.map(MarketPlaceModelMapper.java:12)在com.acme.sugoi.marketplace.service.impl.DealServiceImpl.saveToES(DealServiceImpl.java:468 )在com.acme.sugoi.marketplace.service.impl.DealServiceImpl.saveToES(DealS) erviceImpl.java:461)在sun.reflect.GeneratedMethodAccessor849.invoke(未知来源)在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:483)在org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)在com.sun.proxy . $ Proxy201.saveToES(来源不明)处sun.reflect.GeneratedMethodAccessor848.invoke(来源不明)在sun.reflect.DelegatingMethodAccessorImpl.invoke com.acme.sugoi.marketplace.aspect.DealAspect.saveDealtoES(DealAspect.java:62)(DelegatingMethodAccessorImpl.java:43 )在org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod的org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:620)的java.lang.reflect.Method.invoke(Method.java:483)中AbstractAspectJAdvice.java:602)org.springframew Org.aop.aspectj.AspectJAfterAdvice.invoke(AspectJAfterAdvice.java:47)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor . Java的:92)在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)在org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)在com.sun.proxy $ Proxy175.save(来源不明)在com.acme.sugoi.marketplace.service.impl.DealServiceImpl.saveDeal(DealServiceImpl.java:271)在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)在sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)at在org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)的java.lang.reflect.Method.invoke(Method.java:483)中的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at com.acme.sugoi.marketplace.controller.DealController.updateDeal(DealController)的com.sun.proxy上的org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202) . $ Proxy201.saveDeal(未知来源) .java:99)在org.springframework的org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)的com.acme.sugoi.marketplace.controller.DealController $$ FastClassBySpringCGLIB $$ d9a6fb7b.invoke() .aop.framework.CglibAopProxy $ CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:720)在org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)在org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint .java:85)在com.acme . sugoi.marketplace.aspect.DealSecurityAspect.dealsSecurity(DealSecurityAspect.java:63)at sun.reflect.GeneratedMethodAccessor511.invoke(Unknown Source)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect . 方法.invoke(Method.java:483)org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:620)atg.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:609)atg .springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:68)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:168)org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor) .java:92)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)org.springframework.aop.framework.CglibAopProxy $ DynamicA dvisedInterceptor.intercept(CglibAopProxy.java:655)at com.acme.sugoi.marketplace.controller.DealController $$ EnhancerBySpringCGLIB $$ 1559db68.updateDeal()at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl .invoke(NativeMethodAccessorImpl.java:62)位于org.springframework.web.method的java.lang.reflect.Method.invoke(Method.java:483)的sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) . 在org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod的org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136)上的support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) . involAndHandle(ServletInvocableHandlerMethod.java:110)org.springframework.web.servic.mev ation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:731)org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet . java:959)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)atg.springframework.web.servlet .FrameworkServlet.doPut(FrameworkServlet.java:881)位于javax的org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)的javax.servlet.http.HttpServlet.service(HttpServlet.java:651) . servlet.http.HttpServlet.service(HttpServlet.java:729)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java: 207)在org.apache.tomcat org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)中的.websocket.server.WsFilter.doFilter(WsFilter.java:52)位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java) :207)在org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration $ ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:237)at atorg.apringframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)org.apache.catalina.core.ApplicationFilterChain.doFilter( ApplicationFilterChain.java:207)在org.apache的org.springframework.wef.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)的org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:101)位于org.apringframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy)的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)中的.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) .java:316)在org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doF的org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126) ILTER(FilterSecurityInterceptor.java:90)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)在org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)在org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)在org.springframework.security.web位于org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy)的org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111)中的.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330) .java:330)org.springframework.s的org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169) egn.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)位于org.springframework.security.web.FilterChainProxy $ VirtualFilterChain的org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48) . doFilter(FilterChainProxy.java:330)org.springframework.security.oauth2.provider.authentication.OAuth2AuthenticationProcessingFilter.doFilter(OAuth2AuthenticationProcessingFilter.java:176)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java: 330)在org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.springframework.security.web .FlterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)位于org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter . java:91)org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.springframework.security.web.FilterChainProxy $ VirtualFilterChain.doFilter(FilterChainProxy.java:330)在org.springframework.security.web.FilterChainProxy .doFilterInternal(FilterChainProxy.java:213)在org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)在org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)在有机springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)位于org.apache.catalina.core.ApplicationFilt的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) erChain.doFilter(ApplicationFilterChain.java:207)org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)atg.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at org位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)的.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:87)位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ApplicationFilterChain.java:240)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)org.springframework.web .filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) )在org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)处或g.apache.catalina.core.ApplicationFilterChain.internalDoFilter在org.springframework.boot.actuate.autoconfigure.MetricsFilter(ApplicationFilterChain.java:240)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) . doFilterInternal(MetricsFilter.java:103)在org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)在org.apache .catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)在org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)在org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java :106)在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)在org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)在org.apache.catalina.valves . RemoteIpValve.invoke(RemoteIpV alve.java:676)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)at org.apache.catalina .core.StandardEngineValve.invoke(StandardEngineValve.java:88)在org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095 )org.apache.coyote.AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:672)org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun(NioEndpoint.java:1500)org.apache.tomcat . util.net.NioEndpoint $ SocketProcessor.run(NioEndpoint.java:1456)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java: 617)atg.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)

*** UPDATE :* 这就是我配置模型映射器的方法:modelMapper.getConfiguration() . setAmbiguityIgnored(false).setFieldMatchingEnabled(true).setMatchingStrategy(MatchingStrategies.STRICT);

我的Deal类使用@Data(来自lombok)进行注释,因此所有属性都可以通过公共方法访问

这可能与ClassCastException in ModelMapper: EnhancerByModelMapper cannot be cast有关吗?

1 回答

  • 1

    我认为这个问题可能与https://github.com/modelmapper/modelmapper/issues/204有关

    目前我们在尝试获取访问者时遇到了问题,但是获得了一个mutator .

    但是我不确定如何使用lombok注释配置Dial类 . Dial的getter / setter是否有相同的方法名称?

    如果是这样,我认为问题就在于您所关注的问题,我们计划在下一个版本中修复它 .

相关问题