2016-06-20 23 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

応答ありがとうございました。しかし、この問題はもう私にとっては関係がありません。 – abhishek

関連する問題