2016-05-11 25 views
5

Próbuję uzyskać dostęp do kolekcji mongodb przez SDR. Praca z następujących wersjach obecniereszta danych sprężynowych mongodb java.lang.IllegalArgumentException: PersistentEntity nie może być pusta

<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> 

Moje repozytorium wygląda

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

Mój model jest zdefiniowany następująco

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

Kiedy uderzę http://localhost:9090/api/links otrzymuję następujący wyjątek

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) 

Kopanie trochę znalazłem MongoMappingContext nie ma klasy link jak powinno (chyba)

enter image description here

spędziłem kilka godzin próbując zrozumieć to, ale bez powodzenia. Jestem nie używając wiosennego rozruchu i czuję, że może to być problem ObjectMapper, ale nie wiem, moja domena i konfiguracja jest prosta .... każda pomoc jest bardzo doceniana.

Z góry dziękuję.

Odpowiedz

3

Po tym jak niesprawiedliwe czas zainwestowany w debugowania to wnętrzności udało mi się zrobić to praca bez zmiany kodu na mojej stronie o następującej konfiguracji:

<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> 

może pracować z inną kombinacją . Po prostu uważaj.

+0

Czy udało Ci się dowiedzieć, co było przyczyną błędu? Używam wersji "Athens-SR3" platformy Spring Platform i uruchamiam ten sam problem z MongoDB i 'PersistentEntityResourceAssembler'. – woemler

+0

Nie, nie żałuję. Ponieważ zadziałało, przestałem manipulować przy tej konfiguracji. Jestem pewien, że zaraz po aktualizacji lub czymś, co będę musiał powtórzyć ... – felipe

+0

FWIW, Otrzymuję ten błąd w moich testach z 'MockMvc', ale nie podczas uruchamiania aplikacji z Spring Boot. – woemler