我正在尝试正确地序列化两个对象及其自己的对象可用的对象。我希望能够查看网站管理员,以及用户管理的网站以及特定网站的管理员。我尝试过使用@JSONbackmanaged,它只是提供了ID。这样的事情可能吗?这是伪代码,因此可能存在语法错误,但它尽可能接近。 Hibernate正在管理ORM并加载这些pojos。
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;
}
序列化时我正在寻找的是这样的
for User:
{
id: 2
name: 'foo',
siteAdmin: {
user: 2,
site: { id: 6, name: 'site' }
}
}
对于网站
{
id: 6
name: 'site',
siteAdmins: [
{
user: {id : 2, name: 'foo'},
site: 6
},
{
user: {id : 3, name: 'bar'},
site: 6
},
]
}
相反,我得到的是这样的东西
{
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 :(得分:0)
我能够使用@JsonIgnoreProperties而不是@JsonIdentityInfo来解决这个问题。它将忽略集合上的子属性。离。
在site.java中
On page a.html
在user.java中
@JsonIgnoreProperties({"site"})
public Set<SiteAdmin> getSiteAdmins() {
return this.siteAdmins;
}