我創(chuàng)建了 2 個具有相同 ClassName 但位于不同包中且具有不同 NodeEntity 標簽的類。僅當使用@Query調(diào)用存儲庫方法時,我才面臨下面的 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)在調(diào)試時,我發(fā)現(xiàn)org.neo4j.ogm.session.delegates.ExecuteQueriesDelegate類中的executeAndMap方法使用 Class SimpleName而不是分配的標簽來查找導(dǎo)致問題的 ClassInfo。具有相同簡單名稱的類存在于不同的包中,具有不同的標簽并映射到不同的存儲庫接口。Neo4jSession.loadAll按預(yù)期工作,因為它使用類完整限定名稱來獲取 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) {預(yù)期:用于獲取 ClassInfo 的 NodeEntity 標簽。實際:SimpleName 類用于獲取 ClassInfo。
添加回答
舉報
0/150
提交
取消