2016-05-11 10 views
5

Ich versuche, über SDR auf eine Mongodb-Sammlung zuzugreifen. zur Zeit mit folgenden Versionen Arbeiten siehtFederdaten Rest mongodb java.lang.IllegalArgumentException: PersistentEntity darf nicht null sein

<spring.version>4.1.9.RELEASE</spring.version> 
    <spring-data-rest>2.4.4.RELEASE</spring-data-rest> 
    <spring-data-mongodb>1.8.4.RELEASE</spring-data-mongodb> 

Mein Repository wie

@RepositoryRestResource 
@PreAuthorize("hasAuthority('ROLE_USER')") 
public interface LinksRepository extends MongoRepository<Link, String> { 
Page<Link> findAllByUsefulURLRegex(@Param("regex") String regex, Pageable p); 

Mein Modell ist definiert als

@Document(collection = "links") 
public class Link { 
    public Link() {} 
    @Id 
    private String id; 

folgt Wenn ich getroffen http://localhost:9090/api/links ich die folgende Ausnahme erhalten

java.lang.IllegalArgumentException: PersistentEntity must not be null! 
    at org.springframework.util.Assert.notNull(Assert.java:112) 
    at org.springframework.data.rest.webmvc.PersistentEntityResource$Builder.<init>(PersistentEntityResource.java:139) 
    at org.springframework.data.rest.webmvc.PersistentEntityResource$Builder.<init>(PersistentEntityResource.java:122) 
    at org.springframework.data.rest.webmvc.PersistentEntityResource.build(PersistentEntityResource.java:114) 
    at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.wrap(PersistentEntityResourceAssembler.java:102) 
    at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.toResource(PersistentEntityResourceAssembler.java:83) 
    at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.toResource(PersistentEntityResourceAssembler.java:45) 
    at org.springframework.data.web.PagedResourcesAssembler.createResource(PagedResourcesAssembler.java:182) 
    at org.springframework.data.web.PagedResourcesAssembler.toResource(PagedResourcesAssembler.java:115) 
    at org.springframework.data.rest.webmvc.AbstractRepositoryRestController.entitiesToResources(AbstractRepositoryRestController.java:127) 
    at org.springframework.data.rest.webmvc.AbstractRepositoryRestController.toResources(AbstractRepositoryRestController.java:88) 
    at org.springframework.data.rest.webmvc.AbstractRepositoryRestController.toResource(AbstractRepositoryRestController.java:110) 
    at org.springframework.data.rest.webmvc.RepositorySearchController.executeSearch(RepositorySearchController.java:185) 
    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:497) 
    at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:222) 
    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:775) 
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) 
    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:965) 
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:856) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:622) 

ein wenig Graben fand ich MongoMappingContext nicht die Klasse Link funktioniert haben wie es sollte

(ich glaube)

enter image description here

ich einige Stunden damit verbracht, um es herauszufinden, aber kein Glück. Ich bin nicht mit Spring Boot und es fühlt sich an, es könnte ein ObjektMapper Problem sein, aber ich weiß nicht, meine Domäne und Setup ist einfach .... jede Hilfe wird sehr geschätzt.

Vielen Dank im Voraus.

Antwort

3

Nach einem unfairen viel Zeit bei der Fehlersuche dies den Mut investiert Ich konnte es ohne Codeänderung mit der folgenden Konfiguration auf meiner Seite funktioniert:

<spring.version>4.1.8.RELEASE</spring.version> 
    <spring-data-rest>2.3.2.RELEASE</spring-data-rest> 
    <spring-data-mongodb>1.8.0.RELEASE</spring-data-mongodb> 
    <spring-data-jpa>1.9.0.RELEASE</spring-data-jpa> 

Es könnte mit einer anderen Kombination arbeiten . Passen Sie nur auf.

+0

Haben Sie es geschafft, herauszufinden, was den Fehler verursacht hat? Ich verwende die Spring Platform 'Athens-SR3' Version und stoße auf das gleiche Problem mit MongoDB und dem' PersistentEntityResourceAssembler'. – woemler

+0

Nein, es tut mir nicht leid. Seitdem es funktionierte, hörte ich auf, mit dieser Konfiguration herumzuspielen. Ich bin mir sicher, sobald ich upgrade oder etwas, ich muss es wieder besuchen ... – felipe

+0

FWIW, bekomme ich diesen Fehler in meinen Tests mit 'MockMvc', aber nicht beim Ausführen der Anwendung mit Spring Boot. – woemler

Verwandte Themen