У меня возникают проблемы с сканированием классов заказов в 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
String 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);
}
}
При отправке в / 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?