Jackson - 使用自我引用序列化实体

2023-11-29

我有以下实体:

@Entity
@Table(name = "registry_entry")
@JsonIgnoreProperties(ignoreUnknown = true)
public class RegistryEntry extends GenericEntity {

  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column(unique = true, nullable = false)
  @JsonProperty("id")
  protected Long id;
  ...
  @ManyToMany(fetch = FetchType.EAGER)
  @JoinTable(name = "srv_registry_entry_related_dependence",
    joinColumns = @JoinColumn(name = "id_reg_entry", referencedColumnName = "id"),
    inverseJoinColumns = @JoinColumn(name = "id_related_reg_entry", referencedColumnName = "id"))
  @JsonProperty
  private List<RegistryEntry> relatedRegistryEntries;
  ...
}

假设我们有实体A and B where B.relatedRegistryEntries包含A and A.relatedRegistryEntries包含B.

当我尝试序列化时A or B, i get StackOverflowError。我怎样才能只序列化这个列表中的id?


杰克逊支持@JsonIdentityInfo。这就是您所描述的:将此注释添加到类将使该类的所有实例都使用附加 ID 字段进行序列化,并且下次需要序列化同一实例时,将写入该 ID 字段的值而不是整个对象。

但请注意,这不是标准 JSON。一般来说,通常使用 JSON 格式,因为它受到许多库的广泛支持。使用此功能可能会给您的 API 客户端带来更多问题。

更普遍兼容的方法是序列化自引用对象而不带其自引用字段:

public class RegistryEntry {
        @JsonIgnoreProperties("relatedRegistryEntries")
        private List<RegistryEntry> relatedRegistryEntries;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jackson - 使用自我引用序列化实体 的相关文章

  • 无法让远程 EJB 与 Wildfly 上的 EJB 客户端 API 配合使用

    我目前正在努力让远程 EJB 调用在 wildfly 8 x 和 9 x 上工作 详细来说 它是关于使用 EJB 客户端 API 方法从独立客户端应用程序 而不是从另一个应用程序服务器 进行远程调用 远程命名方法适用于我 但不适用于我的场景
  • Spring Rest POST Json RequestBody 不支持内容类型

    当我尝试使用 post 方法发布新对象时 RequestBody 无法识别 contentType Spring 已经配置完毕 POST 可以与其他对象一起使用 但不能与这个特定对象一起使用 org springframework web
  • 使用 Hibernate 或 Spring 打印 DBMS_OUTPUT.put_line

    我想知道 Hibernate 或 Spring 或任何第 3 方库是否提供将 DBMS OUTPUT put line 消息直接打印到 system out 或日志文件的能力 目的是在控制台中同时显示 PLSQL 日志消息和 java 日志
  • 如何在 Java 中根据 XSD 1.1 验证 XML?

    在 Java 中根据 XML Schema 1 1 验证 XML 文件的最佳方法是什么 我从中获取了代码tutorial http www ibm com developerworks xml library x javaxmlvalida
  • 如何限制用户键入时 JTextPane 中的字符数 (Java)

    我需要不允许在输入 X 后输入任何字符 我需要在输入 X 个字符后发出蜂鸣声 我知道如何在用户按 Enter 键后执行此操作 但我需要在用户按 Enter 键之前执行此操作 我从 Oracle 站点找到的方法是将 DocumentSizeF
  • splitByWholeSeparatorPreserveAllTokens 和 split 之间的区别

    有什么区别StringUtils splitByWholeSeparatorPreserveAllTokens and String split With splitByWholeSeparatorPreserveAllTokens 我们可
  • 嵌套枚举是静态的吗?

    读书时这个问题 https stackoverflow com questions 25011061 why can enum implementations not access private fields in the enum cl
  • Log4j 未使用属性文件找到自定义附加程序

    我正在尝试使用以下 XML 属性文件在 Eclipse 插件项目中配置 log4j 其中包括一个名为 EclipseLoggingAppender 的自定义附加程序
  • java中main的返回类型

    我想知道为什么java中main方法只有void返回类型 public static void main String args 为什么main方法除了void之外没有其他返回类型 Thanks 简短的回答是 因为这就是语言规范 http
  • MAC OS 的 java.awt.Robot 类中出现无头环境错误

    我正在尝试使用 JavaFX 应用程序捕获屏幕截图Robot class 这是我在我的应用程序中使用的代码 Rectangle screenBounds new Rectangle Screen getPrimary getBounds g
  • 使用java读取Excel工作表的单列

    我有一张 Excel 表格 我想编写一个方法 该方法将参数作为要读取的列号 并返回一个由该列中的所有数据组成的数组 然后将该列元素放置在 xml 工作表中 我怎样才能编写一个方法来做到这一点 使用 Apache POI 您可以在他们的使用页
  • 使用 CouchDB 提供 HTML 服务

    我正在尝试将 CouchDB 与 HTML 独立 REST 架构一起使用 也就是说 除了 CouchDB 和 ajax 风格的 javascript 调用 CouchDB 之外 没有其他应用程序服务器 看起来交叉脚本是一个问题 我之前使用过
  • 我们可以用java定制一个垃圾收集器吗?

    我们知道java的垃圾收集器是一个低优先级线程 在java中我们可以创建任何具有高优先级的线程 那么是否有可能拥有我们自己定制的具有可变优先级的垃圾收集器线程 我们可以根据内存管理的级别进行设置 有人尝试过吗 如果是的话 您能分享一些关于如
  • Jar Manifest 文件的使用混乱

    我正在阅读使用 jar 工具打包 java 应用程序 我注意到 META INF 目录下创建了一个清单文件 对于一个简单的应用程序来说 感觉它没有任何作用 我在 stackoverflow 上搜索以了解 Manifest 文件的用法 我碰到
  • Java Calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY),它会向后滚动、向前滚动还是未知?

    假设以下代码在 2009 年 8 月 22 日 星期六 执行 Calendar c Calendar getInstance c set Calendar DAY OF WEEK Calendar SUNDAY c get Calendar
  • 如何在jpa中共享EntityManagerFactory

    我是 jpa 的新手 这是场景 我正在开发一个 Web 应用程序 其中 多个用户可以登录 当 user1 注销时 我正在使用下面的代码 public static void closeEntityManagerFactory if enti
  • JBoss 5 截断 base64 cookie 字符串的尾部 =

    从 JBoss 4 升级到 JBoss 5 后 我注意到最烦人的回归 它截断 base64 cookie 值的尾部等号 我花了很长时间才明白问题不是我的代码而是 JBoss 的 我用 google 搜索了一下 发现这是一个已知的问题issu
  • 在 Vavr 中结合任一者?

    我有几个Vavr https www vavr io Either https www vavr io vavr docs either的 我想调用一个函数Right每个 Either 的值 例如 Either
  • 错误:运算符不存在:整数 = 字符变化,使用 Postgres 8.2

    我有一个用旧版本的 Eclipse Ganymede 如果我没记错的话 开发的 Java EE Web 应用程序 我最近迁移到 Kubuntu 12 04 LTS 并将应用程序迁移到 Eclipse Kepler 我从 Eclipse 网站
  • 生成签名和加密的 JWT

    我正在尝试使用生成签名和加密的 JWT 令牌雨云智威汤逊 http connect2id com products nimbus jose jwt private void generateToken throws JOSEExceptio

随机推荐

  • 从 PDFBox 中剥离时的文本坐标

    我正在尝试使用 PDFBox 从 pdf 文件中提取带有坐标的文本 我混合了在互联网上找到的一些方法 信息 也是stackoverflow 但是我的坐标问题似乎不正确 例如 当我尝试使用坐标在 tex 顶部绘制矩形时 该矩形会在其他地方绘制
  • 如何获取 JAXB 输出以将名称空间包含在没有前缀的子节点中?

    天知道我在论坛上搜索了答案 但没有看到任何答案 这是我的 JAXB 代码读取的简化 XML 涉及2个命名空间 xyz 和 abc 这两个是在两个不同的模式文件中定义的 xjc 为它们生成两个不同的包 以下文件可以很好地读入这些类 甚至可以写
  • 如何解压缩 AES-256 加密的 Zip 文件?

    我正在寻找一个在iPhone应用程序中使用的压缩库 支持解压缩AES 256 位内置档案Winzip压缩实用程序 Thanks zlib 是 iPhone sdk 的一部分 是一个成熟且免费的选项 如果您使用 Xcode 您可以通过以下方式
  • python 3 urllib 和 http.client - 无法打开调试消息

    您好 Stackoverflow 社区 我正在尝试熟悉 urllib request 标准库 并在工作脚本中使用它而不是 wget 然而 我无法在 IDLE 中 使用脚本文件或手动在 cmd py 中键入命令来获取显示的详细 HTTP 消息
  • Vuetify 组合框未更新为正确的值

    我有一个 Vuetify 组合框 在保存时会执行 api 调用来存储所选或输入的值 但是 在更新此值时 如果直接单击保存按钮而没有取消选择组合框 则会再次存储先前存储的值 而不是新值 仅当我手动取消选择该框或按 Enter 时 才会存储正确
  • Firebase:事务读取和更新多个文档

    使用此代码 我可以读取和更新事务中的单个文档 Update likes in post var docRef admin firestore collection posts doc doc id let post await admin
  • pyspark 将行转换为带有 null 的 json

    Goal 对于具有模式的数据框 id string Cold string Medium string Hot string IsNull string annual sales c string average check c strin
  • 如何在clip()之后在canvas中执行clearRect()?

    我需要在画布中执行clip 后执行clearRect 不幸的是 它对我不起作用 如果我排除 Clip 的意思 则clearRect 工作得很好 我需要在执行clip 后执行clearRect 这可能吗 请找到fidd
  • Scrum:任务依赖性和架构设计任务[关闭]

    Closed 这个问题是无关 目前不接受答案 我有一些 Scrum 问题 任务依赖性 我读过的大多数书籍似乎都将任务视为彼此独立的 一个程序员的任务不会影响另一个程序员的任务 因此可以并行运行 如何处理依赖于另一项任务的任务 任务基于故事
  • UIImagePickerControllerDelegate 未正确响应

    我在 iPhone 3Gs 上使用 iOS 4 2 1 中的 UIImagePickerController 我之前使用过已弃用的方法 void imagePickerController didFinishPickingImage edi
  • 使用事件处理程序更改背景颜色

    我正在尝试创建一个简单的表单 其中将三个 div 堆叠在一起 单击每个框时 它们的颜色需要更改 一红 一绿 一蓝 我只需要使用一个事件处理程序来完成此操作 我被我的代码困住了 我希望你们中的一位能指导我完成这个任务 我真的很感激 这是我的代
  • MIPS 装配标签

    MIPS 的组件会读取每个标签吗 忽略任务和语法 我只是快速地将一些东西放在一起 add reg3 reg1 zero add reg1 reg1 reg2 beq reg1 reg3 BRANCH1 reg2 contents are z
  • 如何在 Windows 机器上的 Python 3.4 中安装 lxml

    我已经花了几个小时在这上面 我是 Python 新手 不知道解决方案是什么 我有 Python 3 4 并且想要使用 docx 这需要lxml 到目前为止我所做的工作流程是 我转到Pythonlxml软件包安装程序页面 但很难知道我需要哪个
  • MongoDB 中的 $unwind 运算符是什么?

    这是我使用 MongoDB 的第一天 所以请慢慢来 我无法理解 unwind接线员 也许是因为英语不是我的母语 db article aggregate project author 1 title 1 tags 1 unwind tags
  • 使用 Jquery 和 '.css' 的 CSS 动画

    所以我有一段代码 目的是播放从中选择的动画动画 css on click The code container gt parent click function element css animation fadeInUp 2s webki
  • 如何重新发送失败的ajax请求?

    我有多个 ajax 请求 每分钟有一些请求数据 其他请求由用户通过 ui 发起 get myurl data done function data do stuff 由于身份验证失败 请求可能会失败 我已经设置了一个全局 ajaxError
  • 如何排除故障 - ImportError: 部署 django 时无法导入设置“mysite.settings”?

    我已经根据 apache 部署说明部署了 django 应用程序 并且与 apache 和 mod python 完美配合 但由于我稍微改变了项目结构 我一直无法让它工作 无论我尝试什么 我都会不断收到以下页面 MOD PYTHON ERR
  • 段落行上单独的背景颜色 - CSS

    I am trying to add background color on lines of title But I can t make it perfect as my client needs me to do My client
  • 无限循环数据库检查

    我正在使用 JDBC 需要不断检查数据库是否有更改的值 我目前拥有的是一个无限循环运行 内部循环迭代不断变化的值 并且每次迭代都会检查数据库 public void runInBG this method called from anoth
  • Jackson - 使用自我引用序列化实体

    我有以下实体 Entity Table name registry entry JsonIgnoreProperties ignoreUnknown true public class RegistryEntry extends Gener