使用 OGM 驱动程序从 Neo4j 数据库加载数据时出现 NullPointerException

NullPointerException while loading data from Neo4j database with OGM driver

我正在使用带有 Java(嵌入式驱动程序)的 Neo4j OGM 2.0.4 驱动程序。当我在会话中保存(项目)时,一切看起来都很好。然而,当我想从数据库加载项目时,我得到了这个异常:

16:01:23.182 [main] INFO  org.neo4j.ogm.service.DriverService - Using driver: org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
16:01:24.768 [main] DEBUG org.neo4j.ogm.service.Components - Setting driver to: org.neo4j.ogm.drivers.embedded.driver.EmbeddedDriver
16:01:24.782 [main] WARN  org.neo4j.ogm.session.Neo4jSession - Thread 1: neo4jCMS.entity.Author is not an instance of a persistable class
16:01:24.782 [main] WARN  org.neo4j.ogm.session.Neo4jSession - Thread 1: neo4jCMS.entity.Author is not an instance of a persistable class
Saved
Exception in thread "main" java.lang.NullPointerException
    at org.neo4j.ogm.MetaData.entityType(MetaData.java:280)
    at org.neo4j.ogm.session.Neo4jSession.entityType(Neo4jSession.java:486)
    at org.neo4j.ogm.session.delegates.LoadByTypeDelegate.loadAll(LoadByTypeDelegate.java:60)
    at org.neo4j.ogm.session.delegates.LoadByTypeDelegate.loadAll(LoadByTypeDelegate.java:108)
    at org.neo4j.ogm.session.Neo4jSession.loadAll(Neo4jSession.java:152)
    at neo4jCMS.TestSite.run(TestSite.java:35)
    at neo4jCMS.Application.main(Application.java:20)

执行时:

Author author1 = new Author("Author no 1");
Author author2 = new Author("Author no 2");

session.save(author1);
session.save(author2);
System.out.println("Saved");

Iterable<Author> authors = session.loadAll(Author.class);
for (Author author : authors)
{
  System.out.println("Author: " + author.getName());
}

我的节点class是:

@NodeEntity
public class Author
{
  @GraphId
  private Long id;
  private String _name;

  public Author() { _name = "";}

  public Author(String name)
  {
    _name = name;
  }

  public String getName()
  {
    return _name;
  }
}

首先,您需要向 Author class 添加一个无参数构造函数,以便 OGM 创建对象。

如果仍未解决问题,请尝试重新运行 loadAll 代码段。我在第一次执行时看到了奇怪的异常。我以为这是固定的,但也许它只在 2.0.5-SNAPSHOT.

问题出在配置上。 new SessionFactory() 没有参数 "myProject.subDirectory"。添加后有效。