2016-08-02 32 views
0

我試着從github pagemanual的幫助下給出的簡單示例Neo4J OGM第一次。NullPointerException在做Session.load()時第一次嘗試Neo4J OGM

我正在運行neo4j-community-3.0.0-M05

我得到以下異常:

Exception in thread "main" java.lang.NullPointerException 
    at org.neo4j.ogm.session.delegates.LoadOneDelegate.lookup(LoadOneDelegate.java:56) 
    at org.neo4j.ogm.session.delegates.LoadOneDelegate.load(LoadOneDelegate.java:49) 
    at org.neo4j.ogm.session.delegates.LoadOneDelegate.load(LoadOneDelegate.java:39) 
    at org.neo4j.ogm.session.Neo4jSession.load(Neo4jSession.java:137) 
    at org.neo4j.ogm.session.Capability$LoadOne$load.call(Unknown Source) 
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:110) 
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:130) 
    at Main.main(Main.groovy:24) 

唯一的例外發生在的Main.groovy線24。我調試了。它發生在session.load()呼叫。

我覺得這一定是因爲我必須在設置依賴關係時犯了一些錯誤。但不能弄清楚。

這是我的代碼:

的pom.xml

<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.mahesha999.exp</groupId> 
    <artifactId>Neo4JTemp</artifactId> 
    <version>0.0.1-SNAPSHOT</version>  
    <dependencies> 
     <dependency> 
      <groupId>org.neo4j</groupId> 
      <artifactId>neo4j-ogm-core</artifactId> 
      <version>2.0.4</version> 
     </dependency> 
     <dependency> 
      <groupId>org.neo4j</groupId> 
      <artifactId>neo4j-ogm-http-driver</artifactId> 
      <version>2.0.4</version> 
     </dependency> 
    </dependencies>  
</project> 

ogm.properties

driver=org.neo4j.ogm.drivers.http.driver.HttpDriver 
URI=http://neo4j:[email protected]:7474 

Actor.groovy

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

@NodeEntity 
public class Actor {  
    @GraphId 
    private Long id; 
    private String name; 

    @Relationship(type = "ACTS_IN", direction = "OUTGOING") 
    private Set<Movie> movies = new HashSet<>(); 

    public Actor() { } 

    public Actor(String name) { 
     this.name = name; 
    } 

    public void actsIn(Movie movie) { 
     movies<< movie; 
     movie.getActors() << this; 
    } 
} 

Movie.groovy

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

@NodeEntity 
public class Movie {  
    @GraphId 
    private Long id; 
    private String title; 
    private int released; 

    @Relationship(type = "ACTS_IN", direction = "INCOMING") 
    List<Actor> actors = []; 

    public Movie() {} 

    public Movie(String title, int year) { 
     this.title = title; 
     this.released = year; 
    }  
} 

Main.groovy

1 import org.neo4j.ogm.session.Session 
2 import org.neo4j.ogm.session.SessionFactory 
3  
4 class Main { 
5  
6  static main(def args) 
7  { 
8   //Set up the Session 
9   SessionFactory sessionFactory = new SessionFactory("movies.domain"); 
10   Session session = sessionFactory.openSession(); 
11   
12   Movie movie = new Movie("The Matrix", 1999); 
13   
14   Actor keanu = new Actor("Keanu Reeves"); 
15   keanu.actsIn(movie); 
16   
17   Actor carrie = new Actor("Carrie-Ann Moss"); 
18   carrie.actsIn(movie); 
19  
20   //Persist the movie. This persists the actors as well. 
21   session.save(movie); 
22     
23   //Load a movie 
24   Movie matrix = session.load(Movie.class, movie.id); 
25   for(Actor actor : matrix.getActors()) { 
26    System.out.println("Actor: " + actor.name); 
27   } 
28  } 
29 } 
+0

你使用哪種版本的OGM的?我不能用2.0.4 – Luanne

+0

重現這一點,它不應該在'pom.xml'中指定的'2.0.4'?順便說一句,它爲你工作?在調試模式下,在Main.groovy的第21行,會話不是null。 – Mahesha999

+1

啊對,對不起。是的,我使用了你的pom.xml,它對我來說工作正常。我沒有看到的是你的演員和電影包 - 他們在movies.domain權利? – Luanne

回答