json - Spring MVC - JSON 无限递归

我有这样的双向关系...

Person.java

 public class Person{

    @JsonIgnore
    @OneToMany(targetEntity=PersonOrganization.class, cascade=CascadeType.ALL,
        fetch=FetchType.EAGER, mappedBy="person")
    private Set<PeopleOrg> organization;
    .....
 }

PersonOrganization.java

  public class PersonOrganization{

    @JsonIgnore
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="PERSONID", nullable=false)
private Person person;
  }

即使使用 @JsonIgnore 注释,我在尝试检索人员记录时也会遇到无限递归错误。我在 1.6 版本中尝试了新的注释。 @JsonBackReference@JsonManagedReference。即使那样我也得到了无限递归..

@JsonBackReference("person-organization")Person@JsonManagedReference("person-organization")个人组织

org.codehaus.jackson.map.JsonMappingException: Infinite recursion (StackOverflowError) (through reference chain: com.entity.Person["organization"]->org.hibernate.collection.PersistentSet[0]->com.entity.PersonOrganization["person"]->com.entity.Person["organization"]->org.hibernate.collection.PersistentSet[0]...

即使我交换注释,我仍然会收到此异常。如果映射或我使用 JSON 注释的方式有问题,请告诉我。谢谢

最佳答案

我以前遇到过这种情况。但是在将 @JsonIgnore 从私有(private)字段移到 getter of the field 之后,无限递归就消失了。所以我的疯狂猜测是@JsonIgnore 可能无法在私有(private)领域工作。但是,Jackson Java JSON-processor 的 javadoc 或教程没有提到这一点,所以我不能 100% 确定。仅供引用。

https://stackoverflow.com/questions/9037955/

相关文章:

javascript - 将 JSON 数据从 php 传递给 html-data 属性,然后传递给

json - Node 事件.js :167 throw er;//Unhandled 'error

json - 如何检查 Postgres 中是否存在 json 键?

c# - 发布到 Web API 时出现不支持的媒体类型错误

jquery - 来源http ://localhost is not allowed by Acc

iphone - 减去两个 NSDate 对象

ruby-on-rails - rails jbuilder - 只是一个字符串数组

ajax - django:使用 json 对象测试基于 POST 的 View

java - 使用 JSONObject 在 Java 中为以下结构创建嵌套 JSON 对象?

jquery - 使用 JSON 将嵌套对象发布到 Spring MVC Controller