[英]Neo4j save @Relationship data
這是MVCE: https : //github.com/neo4j-examples/movies-java-spring-data-neo4j如果您將一項測試更改為:
@Test
public void testFindByTitle() {
String title = "The Matrix";
Movie result = movieRepository.findByTitle(title);
Person p = personRepository.findByName("Keanu Reeves");
assertNotNull(result);
assertEquals(1999, result.getReleased());
}
您可以在調試模式下看到對象p
沒有任何movies
。
Person
實體為:
@NodeEntity
public class Person {
@Id
@GeneratedValue
private Long id;
private String name;
private int born;
@Relationship(type = "ACTED_IN")
private List<Movie> movies = new ArrayList<>();
public Person() {
}
public Person(String name, int born) {
this.name = name;
this.born = born;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public int getBorn() {
return born;
}
public List<Movie> getMovies() {
return movies;
}
}
這是neo4j的官方示例。 如何將帶有movies
實體“ Person
存儲在數據庫中,又如何使“ Movie
實體具有roles
?
編輯:我可以做的是在Person
實體方法中添加:
public void addMovie(Movie movie) {
if (this.movies == null) {
this.movies = new ArrayList<>();
}
this.movies.add(movie);
}
並在測試中添加:
p.addMovie(matrix);
personRepository.save(p);
但是我不喜歡-因為我從兩個站點手動設置它。
您無需從兩側手動設置引用。 通過單行movie.setPerson(this);
稍微擴展您的代碼段movie.setPerson(this);
您已經完成:
public void addMovie(@NotNull Movie movie) {
if (this.movies == null)
this.movies = new ArrayList<>();
this.movies.add(movie);
movie.setPerson(this);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.