java - JAXB 将循环引用映射到 XML

标签 java jpa xml-serialization jaxb

我有一个包含循环的对象图。我如何让 JAXB 处理这个问题?我尝试在子类中使用 @XmlTransient 注释,但 JAXB 编码器仍然检测到循环。

@Entity
@XmlRootElement
public class Contact {

    @Id
    private Long contactId;

    @OneToMany(mappedBy = "contact")
    private List<ContactAddress> addresses;

...

}

@Entity
@XmlRootElement
public class ContactAddress {

    @Id
    private Long contactAddressId;

    @ManyToOne
    @JoinColumn(name = "contact_id")
    private Contact contact;

    private String address;

...

}

最佳答案

This page在“非官方 JAXB 指南”中提供了三种处理循环的策略。它们是(总结):

  • 将构成循环的引用属性之一标记为@XmlTransient。
  • 使用@XmlID 和@XmlIDREF 以便使用 XML id 而不是包含来表示引用。
  • 使用 CycleRecoverable 接口(interface)以编程方式处理循环。

关于java - JAXB 将循环引用映射到 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3073364/

相关文章:

postgresql - 保存后无法获取数据库生成的值

java - 对包装类 spring 的 int 字段进行排序

grails - 如何使用 "as"关键字将 pojo 转换为 xml

c# - SGEN XMLSerializer - 应该将 .XMLSerializers.dll 添加为对当前项目或 GAC 的引用?

java - 带有 ViewPager 和 ActionBarSherlock 选项卡的滑动菜单

java - 在 Java8 中并行运行 IO 计算

java - Spring Boot jpa 与 H2 数据库

c# - TestRunType 的序列化抛出异常

java - GridLayout 没有填满整个窗口

java - 如何在对象中创建 toString 方法?