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 楼答案
使用类FullQualifiedName来获取ClassInfo非常有效
已经修好了。参考下文
Mapping Exception for entities with same Simple ClassName but different Labels