为了账号安全,请及时绑定邮箱和手机立即绑定

org.neo4j.ogm.exception.core.MappingException:

org.neo4j.ogm.exception.core.MappingException:

慕莱坞森 2023-08-09 15:15:41
我创建了 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。
查看完整描述

1 回答

?
有只小跳蛙

TA贡献1824条经验 获得超8个赞

使用 Class FullQualifiedName 来获取 ClassInfo 效果很好。

它已被修复。

查看完整回答
反对 回复 2023-08-09
  • 1 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信