java - JAXB 和 JPA,关系

标签 java xml jpa jaxb

由于我对使用 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 包含一个包列表,一个 Package 包含一个 Store。

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

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

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

最佳答案

注意:我是 EclipseLink JAXB (MOXy) JAXB (JSR-222) 的领导和成员专家组。

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

关于java - JAXB 和 JPA,关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19817968/

相关文章:

java - 如何在 Hibernate/JPA 中表示加权多对多关系?

java - JPA - 查询参数为空

c# - 添加背景图像时,Xamarin android 网格无法正确缩放单元格

javascript - 使用浏览器 XMLSerializer() 生成不带 XHTML 实体的 XML

java - 'integer + ""' 是在 Java 中将整数转换为字符串的好方法吗?

java - 如何在Java中使用单应方法实现接口(interface)?

xml - Perl XML::LibXML 与 SOAP::SOM

Spring 数据 JPA : deleteById does not delete record from database but derived delete method does

java - 如果返回的类型不是已知类型,如何使用 intoGroups() ?

java - 如何使用 Jackson 读取 JSON 文件中的多个对象?