Hibernate 註解專題

一對一關聯查詢註解@OneToOne的實例詳解

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "developer_id", referencedColumnName = "developer_id", insertable = false, updatable = false)
public Developer getDeveloper() {
	return developer;
}

單向映射,在字段上使用@OneToOne註解和@JoinColumn(name=”developer_id”)註解, 其中developer_id爲其他表(Developer)的主鍵

https://www.cnblogs.com/boywwj/p/8092915.html

 

@OneToMany 註解詳解

解釋:一張合同對應多個執行計劃, 但是一個執行計劃只能對應一張合同,典型的一對多關係 

@OneToMany(fetch = FetchType.LAZY, cascade = { CascadeType.MERGE })
@JoinColumn(name = "contract_id")
public List<DeveloperPlan> getPlanList() {
	return planList;
}

@JoinColumn(name = “contract_id”)中的contract_id爲many一方的外鍵字段

 

無限遞歸調用解決

 A類中,有個屬性:List<B> b, A與B的關係爲 OneToMany;在B類中,有屬性A a,引用到A中的字段id,並作爲外鍵。hibernate查詢結果正常,可以看到返回的A對象中,有b參數值,但在json轉換的時候就出現了無限遞歸的情況。個人分析,應該是json在序列化A中的b屬性的時候,找到了B類,然後序列化B類,而B類中有a屬性,因此,爲了序列化a屬性,json又得去序列化A類,如此遞歸反覆,造成該問題。

解決:

  在B類中a的getter setter方法上加註解@JsonBackReference,其實自己試過只在setter方法上加@JsonBackReference也夠了。

官方文檔:https://docs.spring.io/spring-data/jpa/docs/1.11.9.RELEASE/reference/html/#appendix

參考:

https://blog.csdn.net/yswknight/article/details/79257372

https://www.jianshu.com/p/14c062a805e7

https://blog.csdn.net/xiaodaiye/article/details/51118870

https://blog.csdn.net/cqyyjdw/article/details/78972352

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章