0
我試着從github page和manual的幫助下給出的簡單示例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 }
你使用哪種版本的OGM的?我不能用2.0.4 – Luanne
重現這一點,它不應該在'pom.xml'中指定的'2.0.4'?順便說一句,它爲你工作?在調試模式下,在Main.groovy的第21行,會話不是null。 – Mahesha999
啊對,對不起。是的,我使用了你的pom.xml,它對我來說工作正常。我沒有看到的是你的演員和電影包 - 他們在movies.domain權利? – Luanne