希望我的团队在这里做一些愚蠢的事情,但是,使用针对Neo4j 2.1.6的SDN 3.3,尝试获取特定实体时出现PersistentEntityConversionException。
数据模型如下所示:
有一个基础节点实体模型,称为A。它是SDN中的抽象模型(它实际上是从其他几个类派生而来,但其根是@NodeEntity)。
有两个同级实体,每个同级实体都源自A。将它们称为B和C。
我正在执行一个Cypher查询,该查询可以有效地查找带有A标签的节点(应包含B和C)。 Java代码看起来像这样:
List<A> nodeList = this.repo.getNodes();
我返回查询,然后遍历结果,并使用模板“获取”结果。最终,我得到了这个异常:
org.springframework.data.neo4j.mapping.PersistentEntityConversionException: Requested a entity of type 'class B', but the entity is of type 'class C'.
这种获取方法曾经在SDN 3.2.1中起作用。
任何帮助将不胜感激。
提前致谢!
最佳答案
经过进一步的挖掘后,我找到了问题的原因,并且我承认我感觉有点像涂料。
实际上,领域中的模型比我发布的模型要复杂一些(也更深一些)。对我而言,问题归结为需要将enforceTargetType
设置为true并将elementClass
设置为目标类型。
换句话说,我的A类与另一个模型(称为M)有关系,并且该关系没有正确标注。
我最终通过大量的SDN代码进行了跟踪,发现只有当我试图与关联的M类建立这种关系时,事情才变得混乱。
尽管如此,在类似情况下,Leward的上述回答可能会对其他一些人有所帮助。