【问题标题】:Neo4j/SDN warining: No identity field found for class of type for exception classNeo4j/SDN 警告:没有为异常类的类型找到标识字段
【发布时间】:2024-01-17 13:46:01
【问题描述】:

在我的 Neo4j/Spring Data Neo4j 项目中,我有以下异常类:

public class CriterionNotFoundException extends NotFoundDomainException {

    private static final long serialVersionUID = -2226285877530156902L;

    public CriterionNotFoundException(String message) {
        super(message);
    }

}

在应用程序启动期间,我看到以下警告:

WARN  o.s.d.n.m.Neo4jPersistentProperty - No identity field found for class of type: com.example.domain.dao.decision.exception.DecisionAlreadyExistsException when creating persistent property for field: null

为什么 Neo4j/SDN 在这个类中寻找身份字段?如何正确配置我的应用程序以跳过此警告?

【问题讨论】:

    标签: spring neo4j spring-boot spring-data-neo4j spring-data-neo4j-4


    【解决方案1】:

    您可以忽略此警告 - 这是由 SDN 在构建元数据 Spring Data REST 集成时产生的。当然,它不应该为 Exceptions 执行此操作,我们将修复此问题。

    【讨论】:

    • 目前 SDN 正在为项目中的每个类在启动时创建一个警告,甚至是配置文件。
    • 嗨 Luanne,现在还是这样吗?我收到同样的警告。谢谢!
    • 警告不应被忽略; 2年了,警告还在吐。
    【解决方案2】:

    “正确配置 [您的] 应用程序”的一种方法是将 EnableNeo4jRepositoriesEntityScan 注释添加到您的 SpringBootApplication(或您的配置 bean)中,如 here 所述,并使用 Neo4J 指定您的包的名称相关类。

    我只调试了 SDN/Neo4j 代码 5 分钟,所以我的猜测可能是错误的,但是,我相信当您没有指定要扫描实体和存储库的包时会生成这些警告。我猜在这种情况下,SpringBoot+Neo4J-mapping 会扫描项目中的每个类,如果一个类有一些字段,但没有类似于“id”字段,它会发出这个警告。 (因此,在带有警告的类中添加 Long id 字段可能也是另一种(是的,非常丑陋的)解决方法)

    当我尝试使用 SpringBoot 2.0.6 + spring-data-neo4j 5.0.11 在我的项目中明确指定包名称时,这些警告消失了。

    【讨论】:

      最近更新 更多