2017-01-29 4 views
4

Ich baue eine Spring Boot-Anwendung mit DynamoDB. Ich wollte Spring Data REST hinzufügen. Die Datenschicht funktioniert, aber der REST schlägt beim Zuordnen der Entitäten fehl. Es löst korrekt auf und erstellt den REST-Endpunkt, aber ich bekomme PersistentEntity darf nicht null sein! Nachricht und eine Ausnahme, wenn die REST-API zugreifen:DynamoDB Spring Boot Data Rest "PersistentEntity darf nicht null sein!"

java.lang.IllegalArgumentException: PersistentEntity must not be null! 
    at org.springframework.util.Assert.notNull(Assert.java:115) 
    at org.springframework.data.rest.webmvc.PersistentEntityResource$Builder.<init>(PersistentEntityResource.java:140) 
    at org.springframework.data.rest.webmvc.PersistentEntityResource$Builder.<init>(PersistentEntityResource.java:123) 
    at org.springframework.data.rest.webmvc.PersistentEntityResource.build(PersistentEntityResource.java:115) 
    at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.wrap(PersistentEntityResourceAssembler.java:74) 
    at org.springframework.data.rest.webmvc.PersistentEntityResourceAssembler.toResource(PersistentEntityResourceAssembler.java:55) 
    at org.springframework.data.rest.webmvc.AbstractRepositoryRestController.entitiesToResources(AbstractRepositoryRestController.java:133) 
    at org.springframework.data.rest.webmvc.AbstractRepositoryRestController.toResources(AbstractRepositoryRestController.java:80) 
    at org.springframework.data.rest.webmvc.RepositoryEntityController.getCollectionResource(RepositoryEntityController.java:212) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:687) 

removed irrelevant parts of the exception 

Wenn ich den Code debuggen, sehe ich, dass die entities in PersistentEntityResourceAssembler leer. Es bedeutet, dass meine Entitäten nicht registriert waren. Ich schätze, das liegt daran, dass es sich nicht um reguläre JPA-Entitäten handelt und diese nur über die Repositorys mit der Datenschicht verbunden sind.

Wie kann ich Spring über meine Entitäten informieren, damit das Daten-REST-Framework mit DynamoDB funktioniert?

Hier sind relevante Teile von meinem Projekt. Die Dummy-Entität eine Tabelle in dynamo darstellt:

@DynamoDBTable(tableName = "DummyTable") 
public class Tester { 
    @Id 
    private String id; 


    @DynamoDBHashKey(attributeName = "id") 
    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 
} 

Das Repository:

public interface TesterRepository extends CrudRepository<Tester, String> { 

    @EnableScan 
    @Override 
    Iterable<Tester> findAll(); 
} 

Die Konfigurationsklasse:

@Configuration 
@EnableDynamoDBRepositories(basePackages = "com.czequered.promocodes.repository") 
public class DynamoDBConfig { 

// deleted params 

    @Bean 
    public AmazonDynamoDB amazonDynamoDB() { 
// deleted the simple initializer, just long code 
     return amazonDB; 
    } 

} 

Und Gradle Abhängigkeiten:

compile 'com.amazonaws:aws-java-sdk-core:1.11.86' 
compile 'org.springframework.boot:spring-boot-starter' 
compile 'org.springframework.boot:spring-boot-starter-data-rest' 
compile 'com.github.derjust:spring-data-dynamodb:4.4.1' 

Der Code wurde vereinfacht Der Rest kann in diesem gist with all files needed to build the whole application gefunden werden.

I tried to follow the demo from the original author of the Spring Data DynamoDB library, aber es fügt JPA und Hibernate dem Klassenpfad hinzu, den ich vermeiden möchte, da ich nichts davon benötigen sollte.

+0

Ich habe das gleiche Problem. Hast du die Lösung gefunden? –

+0

@EricZhang Ich habe nicht die Spring-Bibliothek für DynamoDB verwendet. Sie können sehen, was ich in diesem Projekt getan habe: https://github.com/sm4/promo-codes – sm4

Antwort

-2

Ich entwickelte auch eine App mit Spring Boot und Dynamo db, aber ich habe dieses Problem nie. Während der Entwicklung der Anwendung beziehe ich mich auf das folgende Beispiel.

Git Dynamo db Spring Boot Spring Data Example

Verwandte Themen