我创建了 2 个具有相同 ClassName 但位于不同包中且具有不同 NodeEntity 标签的类。仅当使用@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.neo4j.ogm.session.delegates.ExecuteQueriesDelegate类中的executeAndMap方法使用 Class SimpleName而不是分配的标签来查找导致问题的 ClassInfo。具有相同简单名称的类存在于不同的包中,具有不同的标签并映射到不同的存储库接口。Neo4jSession.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。
添加回答
举报
0/150
提交
取消