第一次尝试Neo4J OGM时在执行Session.load()时发生NullPointerException
我第一次在its上给出的简单示例和its的帮助下试用Neo4J OGM 我正在运行第一次尝试Neo4J OGM时在执行Session.load()时发生NullPointerException,neo4j,neo4j-ogm,Neo4j,Neo4j Ogm,我第一次在its上给出的简单示例和its的帮助下试用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.sessio
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>
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;
}
}
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;
}
}
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 }
正在扫描的包(movies.domain)似乎不包含您的实体类。这就是为什么不保存实体,并且id为空
OGM参考指南(含教程)如下:
还有一个小示例应用程序:正在扫描的包(movies.domain)似乎不包含您的实体类。这就是为什么不保存实体,并且id为空
OGM参考指南(含教程)如下:
还有一个小示例应用程序:您使用哪个版本的OGM?我无法用2.0.4复制它,它是否应该是pom.xml
中指定的2.0.4
?顺便问一下,它对你有用吗?在调试模式下,在Main.groovy
的第21行,会话不是null
。啊,对了,对不起。是的,我使用了你的pom.xml,它对我来说很好。我没有看到的是你的演员和电影包——它们在movies.domain中,对吧?啊啊啊,没看到。浏览OGM手册,主要是浏览代码(没有解释,有点大:p)&没有代码有package movies.domain代码>在顶部。我想知道这个参数对于SessionFactory
构造函数是什么。API说得对:SessionFactory(字符串…包)
。但这也没有意义。我的坏…对Spring来说太新了,点击我,必须从中加载bean/config。他主要是.NET开发人员。无论如何,感谢您尝试我的代码和pin码指向问题。Btn是他们的任何更多关于OGM的图坦卡蒙,可能会更一步一步?将添加一些资源到我的答案,请接受!谢谢你使用哪种版本的OGM?我无法用2.0.4复制它,它是否应该是pom.xml
中指定的2.0.4
?顺便问一下,它对你有用吗?在调试模式下,在Main.groovy
的第21行,会话不是null
。啊,对了,对不起。是的,我使用了你的pom.xml,它对我来说很好。我没有看到的是你的演员和电影包——它们在movies.domain中,对吧?啊啊啊,没看到。浏览OGM手册,主要是浏览代码(没有解释,有点大:p)&没有代码有package movies.domain代码>在顶部。我想知道这个参数对于SessionFactory
构造函数是什么。API说得对:SessionFactory(字符串…包)
。但这也没有意义。我的坏…对Spring来说太新了,点击我,必须从中加载bean/config。他主要是.NET开发人员。无论如何,感谢您尝试我的代码和pin码指向问题。Btn是他们的任何更多关于OGM的图坦卡蒙,可能会更一步一步?将添加一些资源到我的答案,请接受!谢谢
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 }