2013-03-26 94 views
0

我得到了錯誤,並不知道在哪裏調試。春天+自定義轉換器+ Mongodb

ConverterNotFoundException:未發現轉換器能夠從類型@ javax.validation.constraints.NotNull的java.util.HashMap < @ javax.validation.constraints.NotNull java.lang.String中,@ javax.validation.constraints轉換的。 NOTNULL java.util.Date>鍵入java.lang.String中

我已經把我的應用程序上下文:

<mongo:mapping-converter id="mongoConverter" base-package="com.app"> 
    <mongo:custom-converters> 
     <mongo:converter> 
      <bean class="com.app.util.converter.HashMapToStringConverter" /> 
     </mongo:converter> 
     <mongo:converter> 
      <bean class="com.app.util.converter.StringToHashMapConverter" /> 
     </mongo:converter> 
    </mongo:custom-converters> 
</mongo:mapping-converter> 


<bean class="org.springframework.data.mongodb.core.MongoTemplate" id="mongoTemplate"> 
    <constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/> 
    <constructor-arg name="mongoConverter" ref="mongoConverter"/> 
</bean> 

和我的轉換器之一是:

public class HashMapToStringConverter implements Converter<HashMap<String,Date>, String>{ 
    @Override 
    public String convert(HashMap<String,Date> map) {  
     if(map==null){ 
      throw new ConversionFailedException(TypeDescriptor.valueOf(HashMap.class), 
        TypeDescriptor.valueOf(String.class), map, null);   
     }  
     StringBuilder sb = new StringBuilder(); 
     boolean first = true; 
     for(Map.Entry<String, ?> e: map.entrySet()){    
      if(!first){ 
       sb.append(","); 
       first=!first; 
      }    
      sb.append(e.getKey()); 
      sb.append("::"); 
      sb.append(e.getValue());   
     }  
     return sb.toString(); 
    } 
} 

回答

0

我有類似的問題,但情況完全不同。我有一個DefaultConversionService的自定義裝飾器。

我所做的就是調用addConverter方法並添加我的自定義轉換器。

我有這樣的事情:

public class MyConverter<Class1, Class2> {...} 

而在另一個代碼我有:

DefaultConversionService cs = new MyDecoratorConversionService(new DefaultConversionService()); 

cs.addConverter(new MyConverter());