2017-03-08 5 views
0

내가 설정에 코드에 https://neo4j.com/developer/example-project/neo4j 영화 예를 반환 잘못된 JSON

링크에서 발견 된 봄 데이터 Neo4j 4 neo4j 영화의 예를 시도하고있다 장소 상에서. 3 가지 구성 요소 중 2 가지가 작동하며, 영화 목록과 배경 그래프가 작동합니다. 작동하지 않는 것은 오른쪽에 개별 영화를 표시하는 것입니다.

이 정보는 다음 코드 (라인 82부터)
index.html을부터 채워 :

<script type="text/javascript"> 
    $(function() { 
     function showMovie(title) { 
      $.get("/movies/search/findByTitle?title=" + encodeURIComponent(title), // todo fix paramter in SDN 
        function (data) { 
         if (!data) return; // || !data["_embedded"].movies) return; 
         var movie = data; // ["_embedded"].movies[0]; 
         $("#title").text(movie.title); 
... 
        }); 
       }, "json"); 
     return false; 
    } 
... 
</javascript> 

함수, function (data) 호출되는 것은 아니다.

{ 
    "title" : "The Matrix Reloaded", 
    "released" : 2003, 
    "tagline" : "Free your mind", 
    "roles" : [ { 
    "roles" : [ "Morpheus" ], 
    "person" : { 
     "name" : "Laurence Fishburne", 
     "born" : 1961 
        }, 
    "movie" : { : 9 
    } 
    }, { 
    "roles" : [ "Agent Smith" ], 
    "person" : { 
     "name" : "Hugo Weaving", 
     "born" : 1960 
    }, 
    "movie" : { : 9 
    } 
    }, { 
    "roles" : [ "Trinity" ], 
    "person" : { 
     "name" : "Carrie-Anne Moss", 
     "born" : 1967 
    }, 
    "movie" : { : 9 
    } 
    }, { 
    "roles" : [ "Neo" ], 
    "person" : { 
     "name" : "Keanu Reeves", 
     "born" : 1964 
    }, 
    "movie" : { : 9 
    } 
    } ], 
    "_links" : { 
    "self" : { 
     "href" : "http://localhost:8080/movies/9" 
    }, 
    "movie" : { 
     "href" : "http://localhost:8080/movies/9" 
    } 
    } 
} 

는 ID의가 제대로 설치되지 않는 : http://localhost:8080/movies/search/findByTitle?title=The%20Matrix%20Reloaded에가는

다음과 같은 잘못된 JSON을 반환합니다. 이 예제를 실행하여 spring-boot 및 neo4j에 대해 배우기 시작하고 코드가 적절한 데이터 구조를 반환하지 않는 이유를 모르겠습니까? 내가하고 neo4j 콘솔에서 출력 된 텍스트에서 본 실행

MATCH (n:`Movie`) WHERE n.`title` = { `title_0` } WITH n MATCH p=(n)-[*0..1]-(m) RETURN p, ID(n) with params {title_0=The Matrix Reloaded} 

:

neo4j 쿼리에 대한 로그 항목이 있습니다

문제가이 함께 마치
╒══════════════════════════════╤═══════╕ 
│"p"       │"ID(n)"│ 
╞══════════════════════════════╪═══════╡ 
│[]       │"9" │ 
├──────────────────────────────┼───────┤ 
│[{"tagline":"Free your mind","│"9" │ 
│title":"The Matrix Reloaded","│  │ 
│released":"2003"},{"roles":["A│  │ 
│gent Smith"]},{"born":"1960","│  │ 
│name":"Hugo Weaving"}]  │  │ 
├──────────────────────────────┼───────┤ 
│[{"tagline":"Free your mind","│"9" │ 
│title":"The Matrix Reloaded","│  │ 
│released":"2003"},{"roles":["M│  │ 
│orpheus"]},{"born":"1961","nam│  │ 
│e":"Laurence Fishburne"}]  │  │ 
├──────────────────────────────┼───────┤ 
│[{"tagline":"Free your mind","│"9" │ 
│title":"The Matrix Reloaded","│  │ 
│released":"2003"},{"roles":["T│  │ 
│rinity"]},{"born":"1967","name│  │ 
│":"Carrie-Anne Moss"}]  │  │ 
├──────────────────────────────┼───────┤ 
│[{"tagline":"Free your mind","│"9" │ 
│title":"The Matrix Reloaded","│  │ 
│released":"2003"},{"roles":["N│  │ 
│eo"]},{"born":"1964","name":"K│  │ 
│eanu Reeves"}]    │  │ 
└──────────────────────────────┴───────┘ 

추가 ID (n) 열. 나는 그것이 왜 추가되고 있는지, 또는 그것이 추가되지 않도록하는 방법을 모른다. 나는 사이퍼 코드를 생성하는 것이다 볼 수있는 유일한 코드는 MovieRepository.java

Movie findByTitle(@Param("title") String title);

이 버전의 문제, 또는 뭔가 다른가요에서인가? ID (n) 열을 반환하지 않거나 적절한 ID : 9 구조로 반환하지 못하게하려면 어떻게해야합니까?

+0

나는 neo4j를 사용하고 있습니다. 3.1.0 – KitzyKitt

+0

엔티티에서 아무 것도 변경 했습니까? –

+0

@MichaelHunger - 아니에요. 나는 그것이 어떻게 함께 작동하는지보기 시작하는 것처럼 실행되도록하려고 노력 중입니다. – KitzyKitt

답변

0

동일한 구조로 작동하는 다른 예제를 얻을 수있었습니다. https://github.com/springframeworkguru/spring-boot-neo4j-example 그런 다음 원래 예제에서 시도한 작업을 수행하도록 수정하십시오. 그런 다음 두 프로젝트의 차이점을 비교하고 차이점을 원래 프로젝트에 적용하여 올바르게 작동하게했습니다. 추가 MovieService.java

(105)     //data = data["_embedded"].movies; 

필요하지

index.html을 (라인 105) 코멘트 아웃 라인을 : 가 제대로 작동하도록 모든 코드의 차이점은 다음과 파일

public Movie getByTitle (String title){ return movieRepository.findByTitle (title); } 

    public Collection<Movie> getByTitleContaining(String title) { 
     return movieRepository.findByTitleContaining (title); 
    } 

MovieController입니다.자바

@RequestMapping("/movies/search/findByTitle") 
    public Movie findByTitle(@RequestParam String title){ 
     return movieService.getByTitle(title); 
    } 

    @RequestMapping("/movies/search/findByTitleContaining") 
    public Collection<Movie> findByTitleContaining(@RequestParam String title){ 
     return movieService.getByTitleContaining(title); 
    } 

MovieRepository.java (9 호선 및 15) 삭제 파일 또는 가독성을위한

(9) //import org.springframework.data.rest.core.annotation.RepositoryRestResource; 
... 
(15) //@RepositoryRestResource(collectionResourceRel = "movies", path = "movies") 

의 pom.xml을 주석 추가, 내가 넣어 전체 파일은 여기

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.neo4j.examples</groupId> 
    <artifactId>sdn4-movies</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>SDN4 University</name> 
    <description>Demo web project for Spring Boot using Spring Data Neo4j</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.1.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> <!-- added --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-neo4j</artifactId> 
      <!--<version>4.2.0.RELEASE</version>--> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
      <!--<artifactId>spring-boot-starter-data-neo4j</artifactId>--> 
     </dependency> 

     <dependency> 
      <groupId>org.neo4j</groupId> 
      <artifactId>neo4j-ogm-bolt-driver</artifactId> 
      <version>2.1.1</version> 
     </dependency> 

     <!--<dependency>--> 
      <!--<groupId>org.springframework.boot</groupId>--> 
      <!--<artifactId>spring-boot-starter-data-rest</artifactId>--> 
     <!--</dependency>--> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 

     <!-- For some reason newer versions of jackson cause errors with --> 
     <!-- serialisation of nested objects in graph --> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-annotations</artifactId> 
      <version>2.8.0</version> 
      <!--<version>2.5.5</version>--> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-core</artifactId> 
      <version>2.8.6</version> 
      <!--<version>2.5.5</version>--> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.8.6</version> 
      <!--<version>2.5.5</version>--> 
     </dependency> 
     <!-- ========================================== --> 

     <!-- For use in testing --> 
     <dependency> 
      <groupId>org.neo4j</groupId> 
      <artifactId>neo4j-ogm-embedded-driver</artifactId> 
      <version>2.1.1</version> 
      <scope>test</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.neo4j</groupId> 
      <artifactId>neo4j</artifactId> 
      <version>3.1.1</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 

</project> 
0

오늘의 주소는 https://github.com/neo4j-examples/movies-java-spring-data-neo4j-4입니다.

코드를 변경할 필요가 없습니다. 그것은 효과가있을 것입니다.

지금은 SDN 4.2.2 SNAPSHOT 릴리스를 사용해야합니다. Boot 및 Spring Data가 다음 서비스 릴리스를 만들면이를 제거하기 위해 프로젝트를 업데이트 할 것입니다.