0

Ich erstelle, was ich glaube, ein ziemlich einfaches Domain-Modell im Frühjahr zu sein.Spring Data Rest Neo4j: Vorlage darf nicht null oder leer sein

@NodeEntity 
class Dependency { 
    @GraphId 
    private Long id 
    String groupId 
    String artifactId 
    String version 

    @Fetch 
    @RelatedTo(type = "DEPENDS_ON", direction = OUTGOING) 
    Set<Dependency> dependencies = new HashSet<Dependency>() 
} 

hinweis * das obige ist in groovy geschrieben.

Ich habe auch eine nachfolgende Repository (alle Lehrbuch bisher!) Erstellt.

@RepositoryRestResource(collectionResourceRel = "dependency", path = "dependency") 
interface DependencyRepository extends PagingAndSortingRepository<Dependency, Long> { 
    List<Dependency> findByArtifactId(@Param("artifactId") String artifactId) 
} 

Und schließlich die Anwendungsklasse ....

@EnableNeo4jRepositories(basePackages = "io.byteshifter.depsgraph") 
@SpringBootApplication 
class Application extends Neo4jConfiguration { 

    public Application() { 
     setBasePackage("io.byteshifter.depsgraph") 
    } 

    @Bean(destroyMethod = "shutdown") 
    GraphDatabaseService graphDatabaseService() { 
     return new GraphDatabaseFactory().newEmbeddedDatabase("target/dependency.db") 
    } 

    public static void main(String[] args) throws Exception { 
     SpringApplication.run(Application, args) 
    } 
} 

Jetzt würde ich erwarten, wenn ich die folgende Nutzlast bei http://127.0.0.1:8080/dependency Feuer, dass es alle Objekte und Beziehungen ..

{ 
     "groupId": "group1", 
     "artifactId": "artifact1", 
     "version": "1.0", 
     "dependencies" : [ 
      {"groupId": "group2", "artifactId": "artifact2", "version": "2.0"}, 
      {"groupId": "group3", "artifactId": "artifact3", "version": "3.0"} 
     ] 
} 

schaffen würde Statt

, ich ..

{ 
    "cause": { 
    "cause": { 
     "cause": null, 
     "message": "Template must not be null or empty!" 
    }, 
    "message": "Template must not be null or empty! (through reference chain: io.byteshifter.depsgraph.domain.Dependency[\"dependencies\"]->java.util.LinkedHashSet[0])" 
    }, 
    "message": "Could not read JSON: Template must not be null or empty! (through reference chain: io.byteshifter.depsgraph.domain.Dependency[\"dependencies\"]->java.util.LinkedHashSet[0]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Template must not be null or empty! (through reference chain: io.byteshifter.depsgraph.domain.Dependency[\"dependencies\"]->java.util.LinkedHashSet[0])" 
} 

Ich habe keinen Zweifel, das ist ein Mangel an Verständnis in meinem Namen. Wenn mir jemand helfen könnte, mich in die richtige Richtung zu lenken, wäre das sehr zu begrüßen.

Antwort

0

Mein REST-Wissen hat mich gescheitert. Ich hätte einen URI verwenden sollen, um andere Abhängigkeiten darzustellen. Siehe unten:

{ 
     "groupId": "group3", 
     "artifactId": "artifact3", 
     "version": "1.0", 
     "dependencies": ["http://127.0.0.1:8080/dependency/0", "http://127.0.0.1:8080/dependency/1", "http://127.0.0.1:8080/dependency/2"] 
} 
Verwandte Themen