Keine Konverter gefunden, die in der Lage Umwandlung von Typ java.lang.String-Typ - @org.springframework.Daten.repository.Abfrage.Param
Baue ich eine MongoDb rest-Anwendung mit spring boot 1.1.5. Habe ich einen repository:
@RepositoryRestResource(collectionResourceRel = "SourceProductV1Repository", path = "SourceProductV1Repository")
public interface SourceProductV1Repository extends MongoRepository<SourceProductV1Model, String> {
public List<SourceProductV1Model> findByUser (@Param("user") MongoUser user);
}
Definierte ich ein converter zum konvertieren von String zu MongoUser (der Konverter ordnungsgemäß registriert in den spring-Kontext):
@Component
public class String2MongoUserConverter implements Converter<String, MongoUser>{
private static final Log LOGGER = LogFactory.getLog(String2MongoUserConverter.class.getName());
@Override
public MongoUser convert(String s) {
return null;
}
}
So, wenn ich versuche, auf http://localhost:8080/SourceProductV1Repository/search/findByUser?user=test
Bekomme ich die folgende Fehlermeldung:
org.springframework.core.convert.ConverterNotFoundException: No converter found capable of converting from type java.lang.String to type @org.springframework.data.repository.query.Param com.ddelizia.model.MongoUser
at org.springframework.core.convert.support.GenericConversionService.handleConverterNotFound(GenericConversionService.java:291)
at org.springframework.core.convert.support.GenericConversionService.convert(GenericConversionService.java:177)
at org.springframework.data.rest.core.invoke.ReflectionRepositoryInvoker.prepareParameters(ReflectionRepositoryInvoker.java:265)
at org.springframework.data.rest.core.invoke.ReflectionRepositoryInvoker.invokeQueryMethod(ReflectionRepositoryInvoker.java:230)
at org.springframework.data.rest.webmvc.RepositorySearchController.executeQueryMethod(RepositorySearchController.java:236)
at org.springframework.data.rest.webmvc.RepositorySearchController.executeSearch(RepositorySearchController.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:749)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:938)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:870)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:852)
)
Was ich falsch mache? vielleicht ist es erwartet, irgendeine Art von anderer Art als Ziel in den Konverter?
- Sind Sie sicher, dass der Konverter ordnungsgemäß registriert ist? Wie sind Sie mit der Registrierung der Konverter? Warum hat der Konverter eine
@Repository
annotation? - Das war mein Fehler.. naja ich registrierte es wie @Component (druckte ich alle instanziierten beans und ich sehe läuft), aber ich bekomme den selben Fehler.. Kann auch etwas sein, mit @Param anotation (ich bin mit java 7)
- Ich denke nicht, dass nur die Registrierung der Konverter im app-Kontext ist genug. Siehe die Dokumentation: Überschreiben des Standard-mapping mit benutzerdefinierter Konverter
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Feste die Erstellung der bean in der folgenden Weise:
Nach vielen versuchen habe ich gefunden, dass diese Lösung
Konverter und GenericConvert unterstützt werden.