Neo4j Springboot SpringData restful示例没有完成没有关系实体

时间:2017-02-14 19:53:03

标签: rest spring-boot neo4j client spring-data-neo4j-4

我正在使用springio的access-neo4j-data-rest示例,该示例具有作为Person类的一部分的关系,并且实际上没有显示Neo4j的优势。我尝试创建一个Family关系实体,但无法使用Springboot和端口8080的restful服务创建关系。

我的服务工作并使用http://localhost:7474/db/data/node/67/relationships

创建关系

我不应该这样做(其中66和67是现有的Person实体):

发布到http://localhost:8080/people/67/family

std::map

我收到错误: {   “timestamp”:1486948326367,   “身份”:404,   “错误”:“未找到”,   “message”:“没有可用消息”,   “路径”:“/ people / 67 / family” }

Person.java

{
  "to" : "http://localhost:8080/people/66",
  "type" : "RELATED_TO"
}

Family.java

package hello;


import java.util.HashSet;
import java.util.Set;

import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.NodeEntity;
import org.neo4j.ogm.annotation.Relationship;

@NodeEntity
public class Person {

    @GraphId public Long id;

    private String firstName;
    private String lastName;

    @Relationship(type = Family.TYPE, direction = Relationship.UNDIRECTED)
    private Set<Family> family = new HashSet<Family>();

    public Long getId() {
        return id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public Set<Family> getFamily() {
        return family;
    }

    public void addFamily(Family f) {
        family.add(f);
    }

    public void addFamily(Person target, String  association) {
        this.family.add(new Family(this, target, association));
    }

    public void addFamily(Person target) {
        this.family.add(new Family(this, target));
    }

}

PersonRepository.java

package hello;

import org.neo4j.ogm.annotation.EndNode;
import org.neo4j.ogm.annotation.GraphId;
import org.neo4j.ogm.annotation.Property;
import org.neo4j.ogm.annotation.RelationshipEntity;
import org.neo4j.ogm.annotation.StartNode;

@RelationshipEntity(type = Family.TYPE)
public class Family {

    public static final String TYPE = "RELATED_TO";

    @GraphId
    private Long id;

    @Property
    private String association;

    @StartNode
    private Person p1;

    @EndNode
    private Person p2;

    public Family() {
    }

    public Family(Person first, Person second) {
        this.p1 = first;
        this.p2 = second;
    }

    public Family(Person first, Person second, String assoc) {
        this.p1 = first;
        this.p2 = second;
        association = assoc;
    }

    public Long getId() {
        return id;
    }

    public Person getFirst() {
        return p1;
    }

    public Person getSecond() {
        return p2;
    }

    public String getAssociation() {
        return association;
    }

    public void setAssociation(String association) {
        this.association = association;
    }
}

FamilyRepository .java

package hello;

import java.util.List;

import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.data.repository.query.Param;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;


@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {

    List<Person> findByLastName(@Param("name") String name);
    List<Person> findByFirstName(@Param("name") String name);

}

编辑:2-19-2017 - 越来越近了。我需要一个控制器 - 像这样:

package hello;

import org.springframework.data.neo4j.repository.GraphRepository;
import org.springframework.data.rest.core.annotation.RepositoryRestResource;

@RepositoryRestResource(collectionResourceRel = "family", path = "family") // what should go here????
public interface FamilyRepository extends GraphRepository<Family> {

//    //creates a get - need a post
//    @Query("MATCH (a:Traveler),(b:Traveler) WHERE a.lastName = {from} AND b.lastName = {to} CREATE (a)-[r:RELATED_TO]->(b) RETURN r")
//    void worksWith(@Param("to") String to);

}

0 个答案:

没有答案