我有一个包含循环的对象图。我如何让 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/