无法通过Spring Boot将节点保存到Neo4j

问题描述 投票:3回答:1

我正在尝试通过Spring启动将节点保存到Neo4j数据库中,并得到以下异常:

java.lang.IllegalArgumentException: Class class com.test.neo4j.model.Company is not a valid entity class. Please check the entity mapping.
at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:77) ~[neo4j-ogm-core-3.2.11.jar:3.2.11]
    at org.neo4j.ogm.session.delegates.SaveDelegate.save(SaveDelegate.java:51) ~[neo4j-ogm-core-3.2.11.jar:3.2.11]
    at org.neo4j.ogm.session.Neo4jSession.save(Neo4jSession.java:480) ~[neo4j-ogm-core-3.2.11.jar:3.2.11]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_65]

下面是我的Entity类:

package com.test.neo4j.model;

import org.neo4j.ogm.annotation.Id;
import org.neo4j.ogm.annotation.NodeEntity;

@NodeEntity
public class Company {
    @Id
    private String id;
    private String name;
    public Company() {}

    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
}

下面是我的存储库:

package com.test.neo4j.repository;

import org.springframework.data.neo4j.repository.Neo4jRepository;

import com.test.neo4j.model.Company;

public interface CompanyRepository extends Neo4jRepository<Company, String>{

}

我是Autowiring服务中的存储库,并用它调用save。现在,我查找了其他答案并确定了以下内容:

  • 包名称不包含任何大写字符
  • 模型类具有默认构造函数
  • [id是在服务中明确设置的]

我在这里还想念其他东西吗?

java spring-boot neo4j spring-data-neo4j
1个回答
1
投票

Company类不是在应用程序启动时启动的类扫描的一部分。这可能有多种原因:

  1. 您正在使用没有任何特殊配置的Spring Data Neo4j自动启动程序进行程序包扫描。结果,将仅扫描此程序包和“子”程序包中的实体类。
  2. 您手动配置了SessionFactory bean,并且给定的包与您的类所在的(“ sub”-)包不匹配。
© www.soinside.com 2019 - 2024. All rights reserved.