【发布时间】:2016-04-19 11:09:45
【问题描述】:
我有两张桌子。 发布
和喜欢
在这些之间做休眠注解映射 所以 Post bean 中的关联就像....
private List<Like> likes;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "post")
public List<Like> getLikes() {
return likes;
}
并在喜欢豆
private Post post;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PostId")
@JsonIgnore
public Post getPost() {
return post;
}
问题
- Post {@OneToMany} 和 Like {@ManyToOne} 的关联是否正确?
- 获取类型为 Lazy,但仍获得依赖循环。为什么?
试过
为了消除依赖循环,我尝试了
- { @XmlTransient}
- {@JsonIgnore}
- {@JsonManagedReference} 和 {@JsonBackReference}
您能帮帮我吗,还有什么问题?谢谢。
编辑
- 添加了 mappedBy = "post" 和 @OneToMany
-
在 getPost() 上添加了@JsonIgnore
编组到 JSON 并得到以下异常
{org.springframework.http.converter.HttpMessageNotWritableException: 无法写入内容:无法初始化代理 - 没有会话(通过引用链:java.util.HashMap["post"]->java.util.ArrayList[0 ]->com.myproject.admin.model.post.Post["likes"]->org.hibernate.collection.internal.PersistentBag[0]->com.myproject.admin.model.post.Like["user" ]->com.myproject.admin.model.user.User_$$_jvst328_b["pictureId"]);嵌套异常是 com.fasterxml.jackson.databind.JsonMappingException: could not initialize proxy - no Session (通过引用链:java.util.HashMap["post"]->java.util.ArrayList[0]->com.myproject .admin.model.post.Post["likes"]->org.hibernate.collection.internal.PersistentBag[0]->com.myproject.admin.model.post.Like["user"]->com.myproject .admin.model.user.User_$$_jvst328_b["pictureId"]) org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:271) }
【问题讨论】: