0 0

jackson转换json出现无限递归问题10

@Entity
public class Region extends AbstractModel implements Serializable {

    private static final long serialVersionUID = -5173717850565422292L;
    private Long          regionId;
    private String        regionName;
    private List<Region>   children    = new ArrayList<Region>();
    private Region        parent;
    private List<Shop>    shops       = new ArrayList<Shop>();

    @Id
    @GeneratedValue
    @Column(name = "region_id")
    public Long getRegionId() {
        return regionId;
    }

    public void setRegionId(Long regionId) {
        this.regionId = regionId;
    }

    @Column(name = "region_name")
    public String getRegionName() {
        return regionName;
    }

    public void setRegionName(String regionName) {
        this.regionName = regionName;
    }

    @OneToMany(cascade = CascadeType.ALL, fetch =  FetchType.EAGER, mappedBy = "parent")
    public List<Region> getChildren() {
        return children;
    }

    public void setChildren(List<Region> children) {
        this.children = children;
    }

    @ManyToOne
    @JoinColumn(name = "parent_id")
    public Region getParent() {
        return parent;
    }

    public void setParent(Region parent) {
        this.parent = parent;
    }

    @ManyToMany
    @JoinTable(name = "shop_region_mapping",
            joinColumns = {@JoinColumn(name = "region_id")},
            inverseJoinColumns = {@JoinColumn(name = "shop_id")}
            )
    public List<Shop> getShops() {
        return shops;
    }

    public void setShops(List<Shop> shops) {
        this.shops = shops;
    }


用jackson转换json的时候会出现无限递归问题
org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.dingcan.manager.model.Region["children"]->org.hibernate.collection.internal.PersistentBag[0]->com.dingcan.manager.model.Region["parent"]->com.dingcan.manager.model.Region["children"]->
2012年5月01日 14:57

3个答案 按时间排序 按投票排序

0 0

这是继承引起的,并不是简单的属性包含,我也遇到这样一个问题,摸索中....

2013年6月29日 12:07
0 0

不要所有对象都转换,只转换你用到的属性.然后注意对象的互相引用

2012年5月17日 09:42
0 0

是两个类互相引用对方导致的

2012年5月16日 14:43

相关推荐

Global site tag (gtag.js) - Google Analytics