2015-05-28 134 views
2

希望我的团队在这里做一些愚蠢的事情,但是,使用SDN 3.3来对抗Neo4j 2.1.6,当试图获取特定实体时,我得到一个PersistentEntityConversionException。Spring Data Neo4j 3.3:PersistentEntityConversionException

的数据模型是这样的:

  • 有一个基本节点实体模型,把它叫做A.它是抽象的SDN(它实际上由一对夫妇的其他类下降,但根本是@NodeEntity) 。
  • 有两台同级实体,每个从A下降拨打这些B和C.

我执行的Cypher查询,有效地查找节点与来自标签(其中应包括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中工作。

任何援助将不胜感激。

在此先感谢!

回答

0

一些更多的挖掘后,我发现我的问题的原因,我会承认,我觉得有点涂料。

实际上,域中的模型比我发布的模型稍微复杂一些(并且更深一些)。对我来说,这个问题归结为需要设置enforceTargetType为true,并且还设置elementClass到目标类型。

换句话说,我的A类与另一个模型(称为M)有关系,并且该关系没有正确注释。

我最终追查了一小段SDN代码,发现只有当我试图与关联的M类建立关系时才会感到困惑。

尽管如此,Leward的回答在类似的情况下可能会帮助其他人。

0

我有同样的问题,这看起来像在Spring数据Neo4j的一个bug。

我发现一个解决方法,使其工作:禁用Spring Data Neo4j中的类型安全检查。

在Spring XML情况下,只需添加:

<bean id="typeSafetyPolicy" class="org.springframework.data.neo4j.support.typesafety.TypeSafetyPolicy"> 
    <constructor-arg value="NONE" /> 
</bean> 

请记住这可能引起不良副作用。请参阅文档:http://docs.spring.io/spring-data/data-neo4j/docs/3.3.0.RELEASE/reference/html/#entity_type_safety

+0

感谢。也许Michael Hunger或某人可以对此发表评论?如果没有其他事情可以回来,我会将其标记为答案。 – BtySgtMajor

+0

好了,解决了该问题,但推出的又一通过的instanceof特定的抽象对象即检查。如上所述,可能会产生副作用。 – BtySgtMajor

相关问题