gpt4 book ai didi

java - org.neo4j.ogm.exception.core.MappingException : More than one class has simple name

转载 作者:行者123 更新时间:2023-12-02 00:31:35 24 4
gpt4 key购买 nike

我创建了 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方法 类正在使用类 SimpleName(而不是分配的标签)来查找导致问题的 ClassInfo。

具有相同简单名称的类存在于不同的包中,具有不同的标签并映射到不同的存储库接口(interface)。 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。

最佳答案

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

已修复。引用如下,

Mapping Exception for entities with same Simple ClassName but different Labels

关于java - org.neo4j.ogm.exception.core.MappingException : More than one class has simple name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58010431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com