无法使用 Spring 引导将节点保存到 Neo4j
Unable to save Node to Neo4j with Spring boot
我正在尝试使用 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]
下面是我的实体 class:
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
我服务中的 repo,并用它调用 save
。现在,我查阅了其他答案并确定了以下内容:
- 包名称不包含任何大写字符
- 模型class有默认构造函数
id
在服务中明确设置
我还遗漏了什么吗?
Company
class 不是应用程序启动时启动的 class 扫描的一部分。
这可能有多种原因:
- 您正在使用 Spring Data Neo4j 自动启动器,没有任何特殊的包扫描配置。因此,只有实体 class 和 "sub" 包中的实体将被扫描。
- 您手动配置了
SessionFactory
bean,并且给定的包与您的 class 所在的("sub"-)包不匹配。
我正在尝试使用 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]
下面是我的实体 class:
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
我服务中的 repo,并用它调用 save
。现在,我查阅了其他答案并确定了以下内容:
- 包名称不包含任何大写字符
- 模型class有默认构造函数
id
在服务中明确设置
我还遗漏了什么吗?
Company
class 不是应用程序启动时启动的 class 扫描的一部分。
这可能有多种原因:
- 您正在使用 Spring Data Neo4j 自动启动器,没有任何特殊的包扫描配置。因此,只有实体 class 和 "sub" 包中的实体将被扫描。
- 您手动配置了
SessionFactory
bean,并且给定的包与您的 class 所在的("sub"-)包不匹配。