2016-06-20 1 views
0

DTO를 통해 내 양식의 데이터를 가져 와서 Hibernate 엔터티에 매핑하고 있습니다. 들어오는 데이터가 모든 문자열이기 때문에 날짜 필드를 건너 뛰고 싶었고 문자열 필드를 다른 필드와 별도로 날짜로 변환해야했습니다. 나머지 필드는 들어오는 DTO에서 직접 매핑됩니다. 이 과정은 첫 번째 요청에 대해 잘 작동하지만 후속 요청에, 다음과 같은 예외가 발생합니다 :Spring ModelMapper 오류 : 컨트롤러에 대한 매핑이 이미 존재합니다.

 1) A mapping already exists for com.ibm.calypso.entity.WmCompIdfn.setEffStartDate(). 

1 error 
    at org.modelmapper.internal.Errors.toConfigurationException(Errors.java:250) 
    at org.modelmapper.internal.TypeMapImpl.addMappings(TypeMapImpl.java:76) 
    at org.modelmapper.internal.TypeMapStore.getOrCreate(TypeMapStore.java:110) 
    at org.modelmapper.ModelMapper.addMappings(ModelMapper.java:93) 
    at com.ibm.calypso.service.CompanyServiceImpl.updateIdentificationIdfn(CompanyServiceImpl.java:48) 
    at com.ibm.calypso.controller.CompanyController.updateIdentificationIdfn(CompanyController.java:76) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) 
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) 
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:806) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:729) 
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) 
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) 
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) 
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) 
    at org.springframework.web.servlet.FrameworkServlet.doPut(FrameworkServlet.java:883) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:651) 
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at com.ibm.calypso.filter.CORSFilter.doFilterInternal(CORSFilter.java:29) 
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) 
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:522) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1095) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:672) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2500) 
    at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2489) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Thread.java:745) 
오류가 이미 제기했다

하지만 아무도 보인다는 그것에 반응 한 것으로.

https://github.com/jhalterman/modelmapper/issues/103

내 코드 구조는 링크에있는 것과 유사하다.

답변

3

이미 해결 방법을 찾았는지 확실하지 않습니다. 하지만이 문제를 극복하기 위해 해결 방법을 찾았습니다. 내 서비스 메소드에서 modelMapper.addMappings (myPropertymap)을 수행하고있었습니다. 따라서 모든 들어오는 요청에 대해 매핑을 추가하려고합니다. 매핑이 이미 존재하지 않는 경우에만 추가하도록 아래 체크를 추가했습니다.

// Before 
modelMapper.addMappings(myPropertyMap); 


// After 
TypeMap<Source, Dest> typeMap = modelMapper.getTypeMap(Source.class, Dest.class); 
if (typeMap != null) { 
    modelMapper.addMappings(myPropertyMap); 
} 
+0

응답 해 주셔서 감사합니다. Rakesh. 그러나이 문제는 이제 더 이상 나와 관련이 없습니다. – abhishek

관련 문제