如何在不获取 JAX WS Web 服务的情况下发送 JPA 生成的实体
由于这些实体中的引用循环而导致 XML 无限循环异常?
任何的想法?我发现这个 MOXy 可以做到......部分。但是我已经生成了实体并手动添加 XmlTransient 和这样的注释到每个实体,这很疯狂。
你有什么其他想法怎么做吗?
谢谢!
最佳答案
EclipseLink JAXB (MOXy)可以通过@XmlInverseReference 的双向映射来处理这个问题:
import javax.persistence.*;
@Entity
public class Customer {
@Id
private long id;
@OneToOne(mappedBy="customer", cascade={CascadeType.ALL})
private Address address;
}
和
import javax.persistence.*;
import org.eclipse.persistence.oxm.annotations.*;
@Entity
public class Address implements Serializable {
@Id
private long id;
@OneToOne
@JoinColumn(name="ID")
@MapsId
@XmlInverseReference(mappedBy="address")
private Customer customer;
}
更多信息请参见:
您还可以为此使用 MOXy 的元数据外化表示。有关更多信息,请参阅:
关于web-services - 没有无限循环的 JAX WS 服务上的 Jpa 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4376597/