SDN4 - Neo4j OGM + Jackson 2.0

2023-12-12

我尝试在 Spring Data Neo4j 4.0.0RC1 实体上使用 Jackson 2.x 注释,但在我的应用程序上下文启动中看到失败。我有两个@NodeEntities实现一个接口,我已经对接口进行了注释:

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
@JsonSubTypes({
    @Type(value = SimpleNode.class, name="simple"),
    @Type(value = OtherNode.class, name="other")
})
public interface Node {

}

我相信这是正确的用法,但是当我启动应用程序时,由于创建 Neo4j 会话工厂时出现问题,Spring 上下文无法加载。

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'getSessionFactory' defined in class path resource [com/example/TestApplication$Neo4jConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.neo4j.ogm.session.SessionFactory]: Factory method 'getSessionFactory' threw exception; nested exception is java.lang.ClassFormatError: Invalid annotation element type tag: 0x0
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1119) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1014) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:322) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at com.example.TestApplication$Neo4jConfig$$EnhancerBySpringCGLIB$$e5734e5.getSessionFactory(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
    at org.springframework.data.neo4j.config.Neo4jConfiguration.getSession(Neo4jConfiguration.java:49) ~[spring-data-neo4j-4.0.0.RC1.jar:na]
    at com.example.TestApplication$Neo4jConfig$$EnhancerBySpringCGLIB$$e5734e5.CGLIB$getSession$12(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
    at com.example.TestApplication$Neo4jConfig$$EnhancerBySpringCGLIB$$e5734e5$$FastClassBySpringCGLIB$$a7919784.invoke(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:309) ~[spring-context-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at com.example.TestApplication$Neo4jConfig$$EnhancerBySpringCGLIB$$e5734e5.getSession(<generated>) ~[spring-core-4.1.6.RELEASE.jar:na]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_45]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_45]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_45]
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_45]
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
... 94 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.neo4j.ogm.session.SessionFactory]: Factory method 'getSessionFactory' threw exception; nested exception is java.lang.ClassFormatError: Invalid annotation element type tag: 0x0
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.1.6.RELEASE.jar:4.1.6.RELEASE]
... 115 common frames omitted

在玩弄我的配置时,我能够确定 OGM 代码(版本 1.1.0)似乎被@JsonSubTypes。如果我用抽象类替换接口,也会发生此错误。最后,我注意到org.neo4j.ogm.metadata.info.AnnotationsInfo构造函数(第 89 行)有一个 TODO 说// todo: maybe register just the annotations we're interested in.

我的问题是:

  • 有一个优雅的解决方法吗?我认为多态反序列化并不是一个完全不常见的用例?
  • 我对 Jackson 注释的使用正确吗?

这很可能是解决的问题https://jira.spring.io/browse/DATAGRAPH-674

它将在 neo4j-ogm 1.1.1 中提供,但在发布之前,您可以使用快照版本 1.1.1-SNAPSHOT 您还需要包含快照存储库 -

       <repository>
            <id>neo4j-snapshots</id>
            <url>http://m2.neo4j.org/content/repositories/snapshots</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SDN4 - Neo4j OGM + Jackson 2.0 的相关文章

随机推荐

  • 秒表基准测试可以接受吗?

    是否有人使用过秒表基准测试 或者应该始终使用性能工具 有没有什么好的免费 Java 工具 你使用什么工具 为了澄清我的担忧 由于操作系统调度 秒表基准测试可能会出现错误 在程序的给定运行中 操作系统可能会在您正在计时的函数中间安排另一个 或
  • 使用COM端口读取/写入数据的批处理脚本

    我需要编写一个可以读取和写入 COM 端口 在我的例子中为 COM1 的批处理脚本 我知道我可以使用以下命令将数据发送到 COM 端口 echo hello gt COM1 我可以使用读取进入文本文件的数据 type COM1 gt sam
  • Webpack 中的“publicPath”有什么作用?

    Webpack 文档声明output publicPath is The output path从 JavaScript 的角度来看 您能详细说明一下这实际上意味着什么吗 I use output path and output filen
  • NSURLErrorDomain错误-1021

    我正在开发一个应用程序 我集成了保管箱 登录正确完成 我也可以在 dropBox 中创建文件夹 但是当我尝试加载文件时出现错误 我收到以下错误 error making request to 1 files put dropbox Info
  • 我应该在服务器上使用什么 WooCommerce API?

    我正在编写一个脚本来批量更改产品属性 例如价格 重量和尺寸 我需要直接在安装了 WordPress 4 7 2 和 WooCommerce 2 6 13 的服务器上运行脚本 我能想到的选项对我来说似乎并不理想 WooCommerce 非 R
  • 请帮助我在我的 Java 应用程序中过滤掉 Apache Log4j 的第三方日志记录

    我正在使用第三方 jar 它们将自己的日志附加到我的 Java 应用程序的日志文件中 我不想将这些第三方日志附加到我的日志文件中 因为这会使日志文件非常笨拙和混乱 我知道这个方法 log4j logger org springframewo
  • JS 删除前导零

    在 JavaScript 中 我想删除小数位和后面的零 比如我原来的号码 0 00558 我想留下 558 这可能吗 如果有方法的话 我也在使用 AngularJS 您可以通过简单的正则表达式替换来做到这一点 var number 0 00
  • 矩阵取子集

    考虑以下矢量资源和矩阵团队 向量 res 代表索引 我需要只提取那些索引号在向量 res 中且性别 F 的名称 我需要在 R 中执行此操作 由于我是 R 的新手 无法解决此问题 res 1 2 12 16 5 6 19 17 14 9 4
  • 批处理文件 - 循环 ping - 输出到已启动的文件主机

    我想制作一个 bat 文件 它将执行如下所示的 for 循环 echo off FOR L G IN 1 1 69 DO ping n 1 192 168 G 3 ping n 1 192 168 G 4 然后查看输出并仅将成功回复 pin
  • Access 2007 交叉表查询表达式

    目标 根据计算列的值创建百分比列 下面是交叉表查询的 SQL 代码 TRANSFORM Count Master Calendar ID AS CountOfID SELECT Master Calendar Analyst Count M
  • 将上传图像的文件路径保存到 MySQL 数据库

    我为此浏览了无数不同的帮助菜单和主题 但仍然遇到问题 我只想将上传图像的文件路径插入 MySQL 数据库 我尝试将图像传递给变量 然后使用查询将其推送到数据库 但它不起作用 我的代码在下面 表单在上面 php在下面 h1 test h1
  • 如何修复“尝试用‘字符’索引 nil”(Roblox)

    输出显示 Players username PlayerGui replicated 18 attempt to index nil with Character 这是我的代码 local Character Player Characte
  • CSS高度100%问题

    我知道有很多关于 css 100 高度问题的问题 但是我尝试按照那里的说明进行操作 但高度仍然不是 100 所以我想我会再问这个问题 您可以看到问题的网站是 www exendo be 一些CSS样式 html height auto im
  • Ruby - Rails - 将文本传递给 javascript

    为什么这不将文本传递给 javascript jquery i error 里面肯定有一个字符串 我可以在控制台上打印它 js erb 文件 gt error Validation error s Item Is not defined o
  • Intellij checkstyle - 设置相对于模块的路径[重复]

    这个问题在这里已经有答案了 我的公司正在从 Eclipse 切换到 IntelliJ 在 Eclipse 中 我们对抑制过滤器进行了以下配置checkstyle xml
  • 如何使用 .querySelector 选择器定位 .style 属性?

    我通过以下方式选择了特定课程 querySelectorAll var hit3 document querySelectorAll lattern hit 3 circle 我现在正在尝试瞄准并调整 style visibility通过执
  • Dart 1.x 书籍仍然适用吗?

    既然 Dart 2 已发布 那么 Dart 1 x 书籍是否仍然相关 Dart 2 文档仅指向迁移指南 我正在尝试学习 Dart 想知道是否应该购买一本基于 Dart 1 x 的书籍 或者应该等待基于 Dart 2 的书籍的出版 Dart
  • 如何跨子图添加层次轴以标记组?

    我有一组可以分组的不同时间序列 例如 下图显示了 A B C 和 D 系列 但是 A 和 B 属于 G1 组 C 和 D 属于 G2 组 我想通过在左侧添加另一个轴来反映这一点 该轴穿过涡轮机组并相应地标记这些轴 到目前为止我已经尝试了一些
  • Eclipse WTP:项目中定义的类的 JSP 文件中出现“导入 ___ 无法解析”错误

    一位 Visual Studio 用户在 Eclipse 中苦苦挣扎 我将一组 servlet JSP 导入到 Oracle Workshop for Weblogic 中的一个项目中 page jsp 有以下导入语句 import com
  • SDN4 - Neo4j OGM + Jackson 2.0

    我尝试在 Spring Data Neo4j 4 0 0RC1 实体上使用 Jackson 2 x 注释 但在我的应用程序上下文启动中看到失败 我有两个 NodeEntities实现一个接口 我已经对接口进行了注释 JsonTypeInfo