首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JAXB将循环引用映射到XML

JAXB将循环引用映射到XML
EN

Stack Overflow用户
提问于 2010-06-19 06:07:40
回答 4查看 19.8K关注 0票数 19

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

@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;

...

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-06 00:45:45

使用JAXB的好处是它是一个具有多个实现的标准运行时(就像JPA一样)。

如果您使用JAXB (MOXy),那么您可以使用许多扩展来处理EclipseLink实体,包括双向关系。这是使用MOXy @XmlInverseReference注释完成的。它在编组上的行为类似于@XmlTransient,并在解组时填充目标到源的关系。

http://wiki.eclipse.org/EclipseLink/Examples/MOXy/JPA/Relationships

@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") 
    @XmlInverseReference(mappedBy="addresses")
    private Contact contact; 

    private String address; 

... 

} 

还可以使用其他扩展,包括对组合键和嵌入式键类的支持。

要指定EcliseLink MOXy JAXB实现,您需要在模型类(即契约)中包含一个jaxb.properties文件,其中包含以下条目:

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory
票数 13
EN

Stack Overflow用户

发布于 2011-11-02 02:26:54

XMLTransient几乎总是在循环中工作。可能的情况是,您在字段级别上具有XMLTransient,但尚未将XMLAccessorType指定为XmlAccessType.Field。如果您不指定任何内容,则缺省值为XmlAccessType.Property -或您的getters。我遇到过Jaxb从getter中挑选xml元素的经验,因为我错过了访问器类型注释,但仍然可以很好地工作。

票数 6
EN

Stack Overflow用户

发布于 2010-08-23 19:45:30

看看这个教程:Mapping cyclic references to XML by jaxb

我使用它,它工作得很好:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3073364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档