2013-03-26 66 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());