다른 사람이이 문제에 대해 좋은 답변을 찾았는지 확실하지 않지만 여기서는 내가 찾은 것이 있습니다. 나는 스프링 부트 프로젝트를 실행 중이다. 가장 적절한 코드와 예제를이 답변에 게시 하겠지만, 전체 REST 서비스 프로젝트를 확인하려면 https://github.com/jrspriggs/Chronicler
그래서 작은 앱의 목적은 다음과 같다. 스토리에 참여하는 캐릭터/존재를 만들고 스토리 (제목과 슬러그 라인을 특징으로 함)를 작성하고 존재와 스토리 사이의 관계를 만듭니다. 이 방법은 각 캐릭터로부터 다양한 버전의 스토리를 수집합니다.
neo4j 인스턴스는 내 Windows 노트북의 Docker/Kitematic에서 기본 neo4j 인스턴스입니다. 여기 모델은 다음과 같습니다
Being.java :
package com.chronicler.model;
import java.util.Iterator;
import java.util.Set;
import org.springframework.data.neo4j.annotation.Fetch;
import org.springframework.data.neo4j.annotation.GraphId;
import org.springframework.data.neo4j.annotation.NodeEntity;
import org.springframework.data.neo4j.annotation.RelatedTo;
import org.springframework.data.neo4j.annotation.RelatedToVia;
@NodeEntity
public class Being {
public Long getId() {
return id;
}
@GraphId private Long id;
private String firstName;
private String lastName;
private boolean hero;
private boolean villain;
@RelatedToVia(type="TOOK_PART_IN")
@Fetch private Set<Involvement> involvements;
public Set<Involvement> getInvolvements() {
return involvements;
}
public void setInvolvements(Set<Involvement> involvements) {
this.involvements = involvements;
}
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 boolean isHero() {
return hero;
}
public void setHero(boolean hero) {
this.hero = hero;
}
public boolean isVillain() {
return villain;
}
public void setVillain(boolean villain) {
this.villain = villain;
}
}
Story.java
package com.chronicler.model;
import org.springframework.data.neo4j.annotation.GraphId;
import org.springframework.data.neo4j.annotation.NodeEntity;
@NodeEntity
public class Story {
public Long getId() {
return id;
}
@GraphId private Long id;
private String title;
private String slug;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getSlug() {
return slug;
}
public void setSlug(String slug) {
this.slug = slug;
}
}
Involvement.java 거기에서 (이야기되는 관계)
package com.chronicler.model;
import org.springframework.data.neo4j.annotation.EndNode;
import org.springframework.data.neo4j.annotation.Fetch;
import org.springframework.data.neo4j.annotation.GraphId;
import org.springframework.data.neo4j.annotation.RelationshipEntity;
import org.springframework.data.neo4j.annotation.StartNode;
@RelationshipEntity(type="TOOK_PART_IN")
public class Involvement {
@GraphId private Long relationshipId;
@Fetch @StartNode private Being being;
@Fetch @EndNode private Story story;
private String perspective;
public Long getRelationshipId() {
return relationshipId;
}
public void setRelationshipId(Long relationshipId) {
this.relationshipId = relationshipId;
}
public Being getBeing() {
return being;
}
public void setBeing(Being being) {
this.being = being;
}
public Story getStory() {
return story;
}
public void setStory(Story story) {
this.story = story;
}
public String getPerspective() {
return perspective;
}
public void setPerspective(String perspective) {
this.perspective = perspective;
}
}
I 기본적으로 스프링 데이터 서비스를 위해 설정된 저장소 종류 리소스 클래스의 기본 종류를 갖습니다. 그들은 엔티티를 돌보지 만, 그들은 나를 위해 관계를 해결하지 못합니다.거기에서
package com.chronicler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.chronicler.model.Involvement;
import com.chronicler.repo.InvolvementRepository;
@RestController
public class BeingController {
@Autowired
InvolvementRepository involvementRepository;
@RequestMapping(value="/beingStory", method=RequestMethod.POST)
public Involvement createBeingStoryRelationship(@RequestBody Involvement involvement) {
involvementRepository.save(involvement);
return involvement;
}
}
, 단지 localhost에 게시 : 정확하게 관계를 만들 것입니다 JSON 본체의 다음과 같은 종류 3000/beingStory 무엇을하는 일은 그것을 저장하기 위해 별도의 휴식 경로를 구현하는
BeingController.java입니다 :
{
"character": {
"id": 17,
"firstName": "Dr. Victor",
"lastName": "Frankenstein",
"hero": true,
"villain": true
},
"story": {
"id": 15,
"title": "Frankenstein",
"slug": "A doctor plays god"
},
"relationshipId": 10,
"perspective": "I did a monstrous thing. I wanted to create life, but I created horrors... such unimaginable horrors, such that mankind has not ever imagined."
}
그 시점부터 사람과 이야기를 이어갈 수 있습니다. 이 예제 애플리케이션을 통해 선택한 스토리에서 캐릭터 관련성을 확인하기 위해 역방향 관계를 구현하기 위해 더 많은 것을 추가 할 예정이며 앞으로 문자를 추가 할 예정입니다. 당신을 가정
당신이 본, 생성/봄 데이터 Neo4j와 관계 수정에 대한 문서를 찾고 http://docs.spring.io/spring-data/neo4j/docs/current/reference/html/ – Luanne