Spring Data JPA的一對多關聯對映

2021-10-03 04:12:24 字數 4723 閱讀 9185

2. spring data jpa一對多的相關操作

客戶表的建表語句:

create

table

`cst_customer`

(`cust_id`

bigint(32

)not

null

auto_increment

comment

'客戶編號(主鍵)'

,`cust_name`

varchar(32

)not

null

comment

'客戶名稱(公司名稱)'

,`cust_user_id`

bigint(32

)default

null

comment

'負責人id'

,`cust_create_id`

bigint(32

)default

null

comment

'建立人id'

,`cust_source`

varchar(32

)default

null

comment

'客戶資訊**'

,`cust_industry`

varchar(32

)default

null

comment

'客戶所屬行業'

,`cust_level`

varchar(32

)default

null

comment

'客戶級別'

,`cust_linkman`

varchar(64

)default

null

comment

'聯絡人'

,`cust_phone`

varchar(64

)default

null

comment

'固定**'

,`cust_mobile`

varchar(16

)default

null

comment

'移動**'

,primary

key(

`cust_id`))

engine

=innodb

auto_increment=1

default

charset

=utf8;

聯絡人表的建表語句:

create

table

`cst_linkman`

(`lkm_id`

bigint(32

)not

null

auto_increment

comment

'聯絡人編號(主鍵)'

,`lkm_name`

varchar(16

)default

null

comment

'聯絡人姓名'

,`lkm_cust_id`

bigint(32

)not

null

comment

'客戶id'

,`lkm_gender`

char(1

)default

null

comment

'聯絡人性別'

,`lkm_phone`

varchar(16

)default

null

comment

'聯絡人辦公**'

,`lkm_mobile`

varchar(16

)default

null

comment

'聯絡人手機'

,`lkm_email`

varchar(64

)default

null

comment

'聯絡人郵箱'

,`lkm_qq`

varchar(16

)default

null

comment

'聯絡人qq'

,`lkm_position`

varchar(16

)default

null

comment

'聯絡人職位'

,`lkm_memo`

varchar

(512

)default

null

comment

'聯絡人備註'

,primary

key(

`lkm_id`),

key`fk_cst_linkman_lkm_cust_id`

(`lkm_cust_id`),

constraint

`fk_cst_linkman_lkm_cust_id`

foreign

key(

`lkm_cust_id`

)references

`cst_customer`

(`cust_id`)on

delete

noaction

onupdate

noaction

)engine

=innodb

auto_increment=3

default

charset

=utf8;

客戶的實體類如下:

@entity

@table

(name=

"cst_customer"

)public

class

customer

implements

serializable

聯絡人的實體類如下:

@entity

@table

(name=

"cst_linkman"

)public

class

linkman

implements

serializable

客戶的dao層介面如下:

public

inte***ce

customerdao

extends

jparepository

, jpaspecificationexecutor

聯絡人的dao層介面如下:

public

inte***ce

linkmandao

extends

jparepository

, jpaspecificationexecutor

@runwith

(springjunit4classrunner.

class

)@contextconfiguration

(locations=

)public

class

onetomanytest

}

@test

public

void

test1()

通過上面的**,我們可以發現當我們建立了雙向的關聯關係之後,先儲存主表,再儲存從表時,會產生2條insert和1條update,而實際開發中我們只需要2條insert。

原因是在客戶實體類上(一的一方)新增了外來鍵了配置,所以對於客戶而言,也具備了維護外來鍵的作用。那我們的解決是思路很簡單,就是一的一方放棄維護權。放棄外來鍵維護權需要將客戶實體類的一對多配置改為:

@entity

@table

(name=

"cst_customer"

)public

class

customer

implements

serializable

@test

public

void

test2()

刪除操作的說明如下:

級聯操作:指操作乙個物件同時操作它的關聯物件。使用方法:只需要在操作主體的註解上配置cascade。

延遲載入:就是當在真正需要資料的時候,才真正執行資料載入操作。使用方法:只需要在操作主體的註解上配置fetch。

/**

* cascade:配置級聯操作

* cascadetype.merge:級聯更新

* cascadetype.persist:級聯儲存

* cascadetype.refresh:級聯重新整理

* cascadetype.remove:級聯刪除

* cascadetype.all:包含所有

* fetch:配置關聯物件的載入方式

* fetchtype.eager:立即載入

* fetchtype.lazy:延遲載入

*/@onetomany

"customer"

, cascade=cascadetype.all, fetch=fetchtype.lazy)

Spring Data JPA 學習筆記(一)

spring data jpa 是基於orm框架,jpa規範的封裝的一套jpa應用框架,可使開發者用極簡的 即可實現對資料的訪問和操作。它提供了包括增刪改查等在內的常用功能,且易於擴充套件!spring data jpa提供的常用程式設計介面 repository 最頂層的乙個介面,是乙個空介面,目...

spring data jpa遇到的坑

1 column註解name最好全寫了,不然遇到像hibernate駝峰和下劃線風格配置變更時會出現找不到屬性,尤其開啟自動建表情況 2 唯讀操作情況,如果對讀取物件進行了屬性修改操作,那麼jpa會認為你要修改這個實體,使用hibernate的情況下回預設執行乙個update的sql,然後你懂得由於...

spring Data Jpa的分頁管理

通過jpa大大簡化了我們對資料庫的開發工作。但是,之前的例子中我們只提到了最簡單的crud 增刪改查 操作。實際上,spring data jpa對於分頁以及排序的查詢也有著完美的支援,接下來,我們來學習如何通過pageable來對資料庫進行分頁查詢。一 pageable 是spring data庫...