有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java组织。neo4j。ogm。例外果心MappingException:多个类具有简单名称

我已经创建了两个类,它们的类名相同,但包不同,节点属性标签也不同。只有在使用@Query调用存储库方法时,我才会遇到下面的OGM映射异常

Caused by: org.neo4j.ogm.exception.core.MappingException: More than one class has simple name: Circuit
    at org.neo4j.ogm.metadata.DomainInfo.getClassInfo(DomainInfo.java:307)
    at org.neo4j.ogm.metadata.DomainInfo.getClassSimpleName(DomainInfo.java:289)
    at org.neo4j.ogm.metadata.MetaData.classInfo(MetaData.java:78)
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.lambda$executeAndMap$1(ExecuteQueriesDelegate.java:119)
    at org.neo4j.ogm.session.Neo4jSession.doInTransaction(Neo4jSession.java:574)
    at org.neo4j.ogm.session.Neo4jSession.doInTransaction(Neo4jSession.java:553)
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.executeAndMap(ExecuteQueriesDelegate.java:118)
    at org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate.query(ExecuteQueriesDelegate.java:88)
    at org.neo4j.ogm.session.Neo4jSession.query(Neo4jSession.java:408)

调试时,我发现org中的executeAndMap方法。neo4j。ogm。一场代表们。ExecuteQueriesDelegate类正在使用类SimpleName,而不是指定的标签来查找导致问题的ClassInfo

具有相同简单名称的类存在于不同的包中,具有不同的标签,并映射到不同的存储库接口。neo4j衰退。loadAll按预期工作,因为它使用类的完整限定名来获取ClassInfo

private <T> Iterable<T> executeAndMap(Class<T> type, String cypher, 
                Map<String, ?> parameters, ResponseMapper mapper) {

        return session.<Iterable<T>>doInTransaction( () -> {
            if (type != null && session.metaData().classInfo(type.getSimpleName()) != null) {

应为:用于获取ClassInfo的NodeEntity标签

实际:正在使用SimpleName类获取ClassInfo


共 (1) 个答案