2016-09-30 6 views
0

2つのオブジェクトとそのオブジェクトで使用できるオブジェクトを正しくシリアル化しようとしています。私は、サイト管理者だけでなく、ユーザーが管理しているサイト、および特定のサイトの管理者を見ることができるようにしたいと考えています。私は@ JSONbackmanagedを使ってみましたが、単にIDだけを与えました。このようなことは可能でしょうか?これはpsuedocodeなので、構文エラーの可能性はありますが、可能な限り近いです。 HibernateはこれらのpojosのORMとロードを管理しています。Jacksonオブジェクトをリンクした双方向シリアル化

public class SiteAdmin { 

    private Integer id; 
    private Site site; 
    private User user; 

    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property="id") 
    public Facility getSite() { 
     return this.sitey; 
    } 

    public void setSite(Site site) { 
     this.site = site; 
    } 

    @JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property="id") 
    public User getUser() { 
     return this.user; 
    } 

    public void setUser(User user) { 
     this.user = user; 
    } 
} 

と私はシリアル化するとき、私は探しています何user.javaに私が

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property="id") 
public Set<SiteAdmin> getSiteAdmins() { 
    return this.siteAdmins; 
} 

を持っているとsite.javaに私は

@JsonIdentityInfo(generator = ObjectIdGenerators.PropertyGenerator.class, property="id") 
public Set<SiteAdmin> getSiteAdmins() { 
    return this.siteAdmins; 
} 

を持っているが、この

のようなものですユーザーのための

サイト

{ 
    id: 6 
    name: 'site', 
    siteAdmins: [ 
     { 
     user: {id : 2, name: 'foo'}, 
     site: 6 
     }, 
     { 
     user: {id : 3, name: 'bar'}, 
     site: 6 
     }, 
    ] 
} 

については

代わりに私が代わりに@JsonIdentityInfoのこの使用@JsonIgnorePropertiesを解決することができた。この

{ 
    id: 6 
    name: "site", 
    siteAdmins: [ 
     { 
     site: { 
      id: 6 
      name: "site", 
      siteAdmins: [ 
      site: 6, 
      user: {id : 2, name: "foo"} 
      ] 
     }, 
     user: {id : 3, name: "bar"} 
     }, 
     1 
    ] 
} 

答えて

0

のようなものを取得しています。そのセットの子プロパティは無視されます。例。 user.javaでsite.java

@JsonIgnoreProperties({"site"}) 
public Set<SiteAdmin> getSiteAdmins() { 
    return this.siteAdmins; 
} 

@JsonIgnoreProperties({"user"}) 
public Set<SiteAdmin> getSiteAdmins() { 
    return this.siteAdmins; 
} 
関連する問題