当前位置: 首页 > 知识库问答 >
问题:

Spring数据Neo4j 3.3: PeristentEntityConversionExcture

车辰龙
2023-03-14

希望我的团队在这里做一些愚蠢的事情,但是,使用SDN 3.3对抗Neo4j 2.1.6,当我试图获取一个特定的实体时,我会得到一个持久性实体转换异常。

数据模型是这样的:

  • 有一个基本节点实体模型,称之为a。它在SDN中是抽象的(它实际上是从其他几个类派生而来的,但根是@NodeEntity)

我正在执行一个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中。

如蒙协助,将不胜感激。

提前谢谢!

共有2个答案

华欣荣
2023-03-14

我也有同样的问题,看起来像是SpringDataNeo4j中的一个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

红智鑫
2023-03-14

经过进一步的挖掘,我找到了问题的原因,我承认我觉得自己有点像个笨蛋。

实际上,该领域中的模型比我所发布的要复杂一些(而且更深一些)。对我来说,问题归结为需要将enforceTargetType设置为true,并将elementClass设置为目标类型。

换句话说,我的A类与另一个模型(称之为M)有关系,而这种关系没有得到正确的注释。

最后,我跟踪了大量的SDN代码,发现只有当我试图与关联的M类建立这种关系时,事情才变得混乱起来。

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

 类似资料:
  • 我正在使用Spring data redis和jedis与aspectJ进行日志记录。但是得到以下错误。请帮助解决此错误。我在这上面花了很多时间,但无法解决它。 我使用的是Spring数据redis 1.4.1,jedis-2.6.1和Redis-2.8 错误详情:- 下面是使用spring data redis的redis Sentinel配置的Java配置文件 下面是用于日志记录的Aspect

  • 我试图用jqGrid解决Spring Data Rest的问题,所有的事情都很好,除了我想要将对象全部作为序列化返回,所以在ManyToOne关系中,我现在只得到该对象的链接,而我想要将它序列化。 如您所见,中的accountManager类返回为link,但我希望它也被序列化,以便在JQGrid中显示Name属性。 向Shahbour问好

  • 我有一个简单的JpaRepository和一个finder,它返回按名为“number”的属性降序排列的记录。“number”属性也是我的实体的@Id。这很好,但是有数千条记录,所以我想返回一个页面而不是列表。 如果我将查找器更改为以下内容,则排序不再起作用。我尝试过使用可分页参数的排序功能,但不起作用。还删除了OrderByNumberDesc,但结果相同。 EDIT-添加控制器方法 以下是我的

  • 我正在使用spring数据jpa为我的服务实现多事务(数据库),带有两个持久的单元名。并在Jboss 6.4 EAP中部署 以下是我的服务详情 在Jboss中,我无法部署它,我遇到以下异常: 原因:org.springframework.beans.factory.BeanCreationException:无法自动装配字段:私有com.test.demo.domain.repository.Tb

  • 问题是,Spring HATEOAS和Spring Data Rest之间有什么区别? 我觉得两者都可以做同样的事情,Spring数据Rest(作为Spring数据的一部分)似乎更有活力。 https://github.com/spring-projects/spring-hateoas https://github.com/spring-projects/spring-data-rest 你什么

  • 问题内容: 以下是我的申请流程 控制器-服务-存储库 在服务层,我们具有注释。我们还具有配置,在其中指定实体管理器和txn管理器。 我的怀疑是我认为考虑了在其中指定的txn管理器,并且在服务层进行指定没有影响。例如:服务层可以映射到自定义的txn管理器,其中服务调用的存储库可能具有不同的txn管理器。在那种情况下会不会造成问题? 有人可以澄清一下,在使用jpa存储库时是否需要将其放置在服务层上?