[英]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.