当前位置: 首页 > 知识库问答 >
问题:

Neo4j 4.0.0引发NullPointerException

洪照
2023-03-14

我是一个在spring boot和ne04j的新蜂。我正在工作的项目包含两个模块web和core。web(包作为一个war)模块包含spring控制器和core(包作为一个jar)模块包含neo4j存储库和域。web模块包含作为一个jar的core模块。当我使用Java-jar web/target/my-project-1.0-snapshot.war运行项目时,它会抛出NullPointerException。

spring boot版本:1.3.0.发行版Neo4j:4.0.0.发行版

以下是日志

null

下面是我的控制器从web模块(内部战争)

enter code here

@Controller("")
public class TaskApiController {

    @Autowired
    TaskService taskService;

    @Autowired
    TaskRepository repository; 

    @ResponseBody
    @RequestMapping(value = "api/tasks", method= RequestMethod.GET, produces = MediaType.APPLICATION_JSON_VALUE)
    public List<Task> tasks(@RequestParam(value = "limit",required = false) Integer limit) {
        return taskService.tasks(limit == null ? 100 : limit);
    }

}

下面是来自核心模块的Neo4j域(在jar内部)

enter code here

Configuration
@ConfigurationProperties(prefix = "neo4j")
@EnableNeo4jRepositories("com.ng.adm.neo")
public class Neo4jConfig extends Neo4jConfiguration{

    private String protocol;
    private String host;
    private String port;
    private String userName;
    private String password;
    private String url;
    private String domainPackage;

    @Bean
    public Neo4jServer neo4jServer() {
        return new RemoteServer(this.protocol+this.host+":"+this.port,this.userName,this.password);
    }

    @Bean
    public SessionFactory getSessionFactory() {
        return new SessionFactory(this.domainPackage);
    }



    public String getProtocol() {
        return protocol;
    }

    public void setProtocol(String protocol) {
        this.protocol = protocol;
    }

    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public String getPort() {
        return port;
    }

    public void setPort(String port) {
        this.port = port;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUrl() {
        return url;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getDomainPackage() {
        return domainPackage;
    }

    public void setDomainPackage(String domainPackage) {
        this.domainPackage = domainPackage;
    }   
}

下面是来自核心模块的Neo4j配置(在jar内部)

enter code here

@JsonIdentityInfo(generator=JSOGGenerator.class)
@NodeEntity
public class Task {

    @GraphId Long id;
    String taskName;
    String taskDescription;
    String taskPriority;
    String taskStatus;
    int taskArchived = 0;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public int getTaskArchived() {
        return taskArchived;
    }

    public String getTaskName() {
        return taskName;
    }

    public void setTaskName(String taskName) {
        this.taskName = taskName;
    }

    public String getTaskDescription() {
        return taskDescription;
    }

    public void setTaskDescription(String taskDescription) {
        this.taskDescription = taskDescription;
    }

    public String getTaskPriority() {
        return taskPriority;
    }

    public void setTaskPriority(String taskPriority) {
        this.taskPriority = taskPriority;
    }

    public String getTaskStatus() {
        return taskStatus;
    }

    public void setTaskStatus(String taskStatus) {
        this.taskStatus = taskStatus;
    }

    public int isTaskArchived() {
        return taskArchived;
    }

    public void setTaskArchived(int taskArchived) {
        this.taskArchived = taskArchived;
    }

    @Override
    public String toString() {
        return "Task [id=" + id + ", taskName=" + taskName
                + ", taskDescription=" + taskDescription + ", taskPriority="
                + taskPriority + ",taskStatus=" + taskStatus + "]";
    }

}
enter code here

Below is my repository from Core module (inside Jar)

    enter code here

@RepositoryRestResource(collectionResourceRel = "tasks", path = "tasks")
public interface TaskRepository extends GraphRepository<Task> {

    List<Task> findByTaskArchived(@Param("archivedfalse") int taskArchivedFalse);
    List<Task> findByTaskStatus(@Param("status") String taskStatus);

    /*Student findByFirstName(@Param("firstName") String fname);

    @Query("MATCH (n:Student) RETURN n LIMIT {limit}")
    List<Map<String,Object>> students(@Param("limit") int limit);*/
}

下面是来自核心模块的服务类(在jar内部)

enter code here


@Service
@Transactional
public class TaskServiceImpl implements TaskService{

    @Autowired TaskRepository taskRepository;

    @Override
    public List<Task> tasks(int limit) {
        Iterable<Task> result = taskRepository.findAll();
        return (List<Task>) AppUtils.makeCollection(result);
    }

}

它在我从mvn运行项目时起作用spring-boot:run命令,但从命令Java-jar web/target/my-project-1.0-snapshot.war获得异常。

请帮我找出问题所在。

提前道谢。

共有2个答案

潘翊歌
2023-03-14

我认为这个问题已经解决了-请将neo4j-ogm依赖版本升级到1.1.4

唐修明
2023-03-14

我也出现了同样的错误,这是由于我的域包在SessionFactory bean中不正确。

@Bean
public SessionFactory getSessionFactory() {
    return new SessionFactory("com.make.sure.this.is.right");
}

注意,您可以传入多个包参数

 类似资料:
  • 问题内容: 我正在尝试使用IntelliJ 12.1.3使用JPA测试Hibernate 4.2.1.Final,但出现以下错误。 一切似乎都设置正确(我让IntelliJ生成了映射),由于我对Hibernate和JPA的经验为零,所以我无所适从。 为什么要启用NPE? 主类: 错误: Persistance.xml 问题答案: 该消息向我表明它无法连接到数据库。仔细检查您的连接字符串,并确保您的

  • 在我的Spring应用程序中,我使用StandardPasswordEncoder对用户密码进行编码。 我将用户数据保存在嵌入式H2数据库中。

  • 问题内容: 有人看过此消息吗? 在Hibernate论坛上进行了一些讨论,但对于问题可能是什么却不太清楚。 我们正在使用JPA和Spring 3.0.5运行Hibernate 3.6.9。这个异常只是在两个版本之间弹出(就像一天前一样,今天在部署时会引起问题)。这可能与某些错误配置的orm文件有关吗?我们为模型提供了orm.xml文件,为命名查询提供了文件。 问题答案: 因此,我们发现了问题。不幸

  • 问题内容: 我正在使用Spring Boot,Spring Data REST,Hibernate(5.2.12.Final),并将存储库公开为REST服务。 我有一个引发NullPointerException的查询问题,我不明白原因。我正在通过HTTP请求调用此方法(Spring Data REST公开了此方法)。 这是代码: 这是堆栈跟踪: 我确实没有发现该查询有任何问题。我是在做错什么还是

  • departamentdaoimpl.java departamentservice.java DepartamentServiceImpl.java

  • 问题内容: 多次询问了这个问题,我已经尝试了全部。但不幸的是,两者都没有为我工作。 我正在尝试实现两个活动之间的导航,这是学习Android应用程序开发的一部分。我的最小SDK版本和目标SDK版本分别为11和21(Android 5)。我在AndroidManifest.xml中的设置如下所示: 我有两个活动:MainActivity和DetailActivity。当我单击MainActivity