【问题标题】:Class order scanning bug in Neo4J OGMNeo4J OGM 中的类顺序扫描错误
【发布时间】:2019-11-05 20:07:56
【问题描述】:

我在 Neo4 OGM 中扫描订单类时遇到问题。

采用以下最小的 Spring Data Rest + Spring Boot 应用程序:

@NodeEntity("Country")
public class Country extends CountryRevision {
}

@NodeEntity("CountryRevision")
public class CountryRevision extends RevisionEntity<CountryRevision> {
    String name;
}

public abstract class RevisionEntity<T> {

    @Id @GeneratedValue(strategy = UuidStrategy.class)
    String id;

    @Relationship
    T previousRevision;

}

@RepositoryRestResource(collectionResourceRel = "countries", path = "countries")
public interface CountryRepository extends Neo4jRepository<Country, String> {}

@RepositoryRestResource(collectionResourceRel = "countryRevisions", path = "country-rev")
public interface CountryRevisionRepository extends Neo4jRepository<CountryRevision, String> {}

@SpringBootApplication
@EnableNeo4jRepositories(basePackageClasses = DemoApplication.class)
@EntityScan(basePackageClasses = DemoApplication.class)
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

当 POSTING 到 /country-rev 时,我收到以下错误:

java.lang.RuntimeException: Field previousRevision not found in class com.example.demo.CountryRevision or any of its superclasses
    at org.neo4j.ogm.metadata.ClassInfo.getField(ClassInfo.java:601) ~[neo4j-ogm-core-3.2.1.jar:3.2.1]
    at org.neo4j.ogm.metadata.FieldInfo.readProperty(FieldInfo.java:411) ~[neo4j-ogm-core-3.2.1.jar:3.2.1]

真正奇怪的是,如果我将“Country”类名修改为其他名称,例如“Toto”,一切正常。

我调试了 OGM 的初始化方式。看起来根据类名,包含所有 OGM ClassInfos 的映射将以不同的顺序(在 DomainInfo.prepareClass() 中)进行处理,这将产生不同的结果。

我的问题是:前面的例子有什么问题吗,或者这是 OGM 中的错误?

【问题讨论】:

  • 这是非常奇怪的行为,不应该发生,因为如果在扫描时添加了任何类,整个类层次结构将重新构建。将对此进行调查。我是否正确假设 @Relationship String previousRevision 指向的不是 String
  • 是的,previousRevision 类型应该是 T。但是我想确保即使它是一个简单的类型,错误仍然存​​在,因此在示例中为String。你想让我为此在 Github 上创建一个问题吗?
  • 马丁,您能否将您发布到 URL 的内容发布到 GitHub?

标签: spring-data-rest spring-data-neo4j neo4j-ogm


【解决方案1】:

这绝对是我在这里报告的 OGM 问题:

https://github.com/neo4j/neo4j-ogm/issues/704

【讨论】:

  • 感谢您报告此事!
猜你喜欢
  • 1970-01-01
  • 2021-06-23
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多