開發中常用到資料表的關聯(其實很難遇到。。),spring-data-jpa(其實是hibernate)提供了一整套十分方便的註解來供我們使用表關聯功能。
onetoone
onetomany
manytoone
manytomany
舉例之前,先理解兩個表的關係中,哪乙個是主體,一對一以及多對多需要自己按照現實場景來區分,而一對多和多對一始終是以多的一方為主體的。註解在使用中「始終在非主體的一方標記自己在主體中的名稱」。
理解上面一段話,那麼操作也會變得很簡單。
開始前,把我們之前測試的student表的主鍵生成策略改成自增,需要新增一些實體,er圖如下:
student和score是一對一的關係,score類如下:
@entity
@table(name = "score")
public class score
現在開始建立它和student的關係,首先在student類中加入元素score,在score類中也加入元素student,並都用onetoone標註,你中有我,我中有你。
score:
@onetoone
private student student;
student:
@onetoone
private score score;
然後我們需要區分誰是主體,按照現實理解,肯定是student,於是我們需要在非主體的那個類中標註出它在主體中的名字,也就是在score類中標註它在student類中的名字:
private student student;
此外,我們還可以設定對映級聯,只需要在註解中增加引數(千萬要注意必須在主體一側):
@onetoone(cascade = cascadetype.remove )
private score score;
當student刪除的時候,score對應也會刪除。其他可以參看cascadetype類。
現在我們開始建立student和school的關係,根據我們開始說的,student肯定是主體,那麼我們只需要在school中標註出它在student中的名稱就好了。建立school類:
@entity
@table(name = "school")
public class school
在student類中加入school,並且指定關係是多對一
@manytoone
private school school;
在school中建立student集合,指定關係是一對多,並且申明它在student類中的名稱
private liststudents;
看到現在,大概也能知道多對多怎麼設定了,我們新建subject
@entity
@table(name = "subject")
public class subject
分析可以知道,student仍然是關係的主題,所以我們需要在subject類中標註它在student類中的名稱。
student:
@manytomany
private listsubjects;
subject:
private liststudents;
JPA 自關聯 PO 對映
jpa 自關聯 po對映 資料庫設計 id關聯parent id.實體類設計 cascadetype的各種屬性決定級聯查詢 更新 刪除的方式 manytoone cascade cascadetype.refresh,fetch fetchtype.eager joincolumn name par...
JPA 4 對映關聯關係
以customer和order為例,多個order可以同屬於乙個使用者。table name jpa orders entity public class order public class jpatestsinglemanytoone 單向多對一關聯關係之查詢 1 預設情況下使用左外連線的方式來...
JPA 物件關係對映之關聯關係對映策略
關聯關係對映 關聯關係對映,是對映關係中比較複雜的一種對映關係,總的說來有一對 一 一對多和多對多幾種關係。細分起來他們又有單向和雙向之分。王 漢敏,軟體工程師,ibm 2013 年 6 月 17 日 開始您的試用 關聯關係對映,是對映關係中比較複雜的一種對映關係,總的說來有一對 一 一對多和多對多...