2

由于我对使用 JPA(实现:EclipseLink)和 JAXB 还是很陌生,所以在考虑设计时遇到了一个问题:

我有以下设置(简化):

@XmlRootElement
@Entity
@Tabe(name="Packages")
class package {
 @Id
 @Column(name="p_id")
 int id;

 String content;

 @ManyToOne(fetch = FetchType.LAZY, optional=true)
 @JoinColumn(name="s_id", nullable=true, updatable=true)
 Store fk_store;
}

@XmlRootElement
@Entity
@Table(name=stores")
class Store {
 @Id
 @Column(name="s_id")
 int id;

 @OneToMany (mappedBy="fk_store", fetch=FetchType.LAZY)
 List<Package> packagesStored;
}

我从几个 Internet 资源中发现,我必须保持双方的关系才能使 JPA 工作。

所以一个Store包含一个包列表,一个包包含一个Store。

如果我现在构建一个 RESTfull Web 服务并想要发送一个包/仓库的 XML 表示,那么这些项目会递归地相互嵌入吗?

    <package>
         <store>
              <packagesStored>
                    <package>
                         <store>
...

如果是,我该如何防止这种情况?如果不是,为什么不呢?...

4

1 回答 1

0

注意: 我是EclipseLink JAXB (MOXy)负责人,也是JAXB (JSR-222)专家组的成员。

如果您还使用 EclipseLink 作为您的 JAXB 提供程序,那么您可以利用@XmlInverseReference扩展来映射方向关系:

于 2013-11-06T18:07:09.947 回答