[英]Hibernate bidirectional mapping
我有两张桌子。 岗位
并喜欢
做这些之间的hibernate注释映射所以在Post bean中的关联就像....
private List<Like> likes;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "post")
public List<Like> getLikes() {
return likes;
}
在Like bean中
private Post post;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "PostId")
@JsonIgnore
public Post getPost() {
return post;
}
问题
试着
为了消除依赖循环,我尝试了
你能帮帮我吗,问题出在哪里呢? 谢谢。
编辑
在getPost()上添加@JsonIgnore
编组到JSON并得到以下异常
{org.springframework.http.converter.HttpMessageNotWritableException:无法写内容:无法初始化代理 - 无会话(通过引用链:java.util.HashMap [“post”] - > java.util.ArrayList [0] - > com.myproject.admin.model.post.Post [ “喜欢”] - > org.hibernate.collection.internal.PersistentBag [0] - > com.myproject.admin.model.post.Like [ “用户”] - > com.myproject.admin.model.user.User _ _ $$ jvst328_b [ “pictureId”]); 嵌套异常是com.fasterxml.jackson.databind.JsonMappingException:无法初始化代理 - 没有Session(通过引用链:java.util.HashMap [“post”] - > java.util.ArrayList [0] - > com.myproject .admin.model.post.Post [ “喜欢”] - > org.hibernate.collection.internal.PersistentBag [0] - > com.myproject.admin.model.post.Like [ “用户”] - > com.myproject .admin.model.user.User _ $$ _ jvst328_b [“pictureId”])org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.writeInternal(AbstractJackson2HttpMessageConverter.java:271)}
Post {@OneToMany}和Like {@ManyToOne}是正确的协会吗?
不,这不对。 你有什么两个独立的协会。 要使它成为单个双向关联,OneToMany端必须是ManyToOne的反面:
@OneToMany(mappedBy = "post")
请注意,LAZY是toMany关联的默认值。
获取类型是Lazy但仍然获得依赖循环。 为什么?
这与Hibernate无关,而且与JSON或XML marshaller有关。 关联是懒惰的事实与它无关:它看到了getPost(
)或getLikes()
方法,所以它调用它。 调用它会懒惰地加载帖子或者喜欢的东西并将它们/它们返回到编组器,因此编组结果。
您尝试使用XML和JSON注释这一事实令人怀疑:您是否正在编组JSON或XML? 哪个编组? 你尝试过什么代码? 你有什么问题? 没有这些信息,就无法回答。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.