由于我还不熟悉使用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;
}
我从几个互联网资源中得知,我必须保持JPA的双方关系。
因此,商店包含包列表,包包含商店。
如果我现在构建一个RESTfull Web服务并想要发送一个包/仓库的XML表示,那么这些项是否会递归地相互嵌入?
<package>
<store>
<packagesStored>
<package>
<store>
...
如果是,我该如何防止这种情况?如果没有,为什么不呢? ...
答案 0 :(得分:0)
注意:我是EclipseLink JAXB (MOXy)主管,是JAXB (JSR-222)专家组的成员。
如果您还使用EclipseLink作为JAXB提供程序,那么您可以利用@XmlInverseReference
扩展来映射方向关系: