jpa關聯對映 一)

2022-01-14 06:51:19 字數 1890 閱讀 2939

開發中常用到資料表的關聯(其實很難遇到。。),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 日 開始您的試用 關聯關係對映,是對映關係中比較複雜的一種對映關係,總的說來有一對 一 一對多和多對多...