将 pojo 转换为 json 时出错(cxf JAX-RS:数据绑定)

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.WhosebugError
    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.print(DatatypeWriter.java:114)
    at com.sun.xml.txw2.DatatypeWriter.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)

如何正确转换包含对自身的引用的 类?

您正在进入一个无限循环,因为当您的子域尝试呈现其父域时,父域随后呈现其所有子域,其中每个子域将再次尝试呈现父域,依此类推,直到您 运行 内存不足。因此,要解决您的问题,请在 Domain class

中的 parent 属性 上添加注释 @JsonIgnore