我正在使用 Spring Data Neo4j 来处理我的 Neo4j 数据库。我的应用程序包含一个与名为 Type 的枚举有关系的 Variation 节点实体。这是我的代码的简化版本:
@Node
public class Variation extends BaseEntity {
private String title;
@Relationship(type = "HAS_ATTRIBUTE", direction = Relationship.Direction.OUTGOING)
private Type type;
// Other fields and relationships...
}
@Node
public enum Type {
CUSTOM(0),
FIX(1),
// Other constants...
@Id
private final int id;
Type(int id) {
this.id = id;
}
}
这是我的build.gradle
依赖项:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-neo4j'
implementation 'org.springframework.boot:spring-boot-starter-web'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
implementation 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
}
我还使用 VariationService 创建节点和关系。VariationRepositoryfindAll
上的方法失败,并出现以下错误:
java.lang.IllegalStateException: Required property $enum$name not found for class org.com.example.node.Type
at org.springframework.data.mapping.PersistentEntity.getRequiredPersistentProperty
...
该错误似乎表明类型枚举映射存在问题。
我的问题是:
- 如何配置 Spring Data Neo4j 以将 Type 等枚举正确映射为节点?
- 使用 Spring Data 时,是否有特定的方法来处理 Neo4j 中的枚举属性?