[英]Error convert pojo to json(cxf JAX-RS : Data Bindings)
我有下一个 pojo:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "")
@XmlRootElement(name = "domain")
@Entity
class Domain {
@ManyToOne
private Domain parent;
@OneToMany //add column definitions as needed
private List<Domain> subdomains;
}
和 rs 服务:
@GET
@Path("/domains/{id}")
@Produces("application/json")
public Bus getDomains(@PathParam("uuid") String uuid){
return domainsService.getByUuid(uuid);
}
当我尝试访问资源时,我得到一个循环并且
java.lang.StackOverflowError
at com.sun.xml.txw2.StartTag.addNamespaceDecl(StartTag.java:158)
at com.sun.xml.txw2.StartTag.getPrefix(StartTag.java:257)
at com.sun.xml.txw2.DatatypeWriter$1$5.print(DatatypeWriter.java:114)
at com.sun.xml.txw2.DatatypeWriter$1$5.print(DatatypeWriter.java:109)
at com.sun.xml.txw2.Document.writeValue(Document.java:165)
at com.sun.xml.txw2.StartTag.addAttribute(StartTag.java:135)
at com.sun.xml.txw2.ContainerElement._attribute(ContainerElement.java:318)
at com.sun.xml.txw2.ContainerElement._attribute(ContainerElement.java:313)
如何正确转换包含对自身的引用的类?
您正在进入无限循环,因为当您的子域尝试呈现其父域时,父域会呈现其所有子域,其中每个子域将再次尝试呈现父域,依此类推,直到您用完 memory。因此,要解决您的问题在Domain
class 的parent
属性上添加注释@JsonIgnore
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.