Spring Boot JPA中關聯表的使用

2021-10-03 11:49:25 字數 2341 閱讀 4444

spring boot jpa中關聯表的使用

本文中,我們會將會通過乙個book和category的關聯關係,來講解如何在jpa中使用。

我們還是使用h2記憶體資料庫來做測試:

>

>

org.springframework.bootgroupid

>

>

spring-boot-starter-data-jpaartifactid

>

dependency

>

>

>

com.h2databasegroupid

>

>

h2artifactid

>

>

runtimescope

>

dependency

>

下面我們構建兩個entity:

@data

@entity

public

class

book

@data

@entity

public

class

category

上面我們定義了兩個entity,category和book是一對多的關係。我們通過@manytoone和@onetomany來定義相應的關係。

我們接下來構建相應的repository:

public

inte***ce

bookrepository

extends

crudrepository

public

inte***ce

categoryrepository

extends

crudrepository

為了方便測試,我們先構建需要的資料schema.sql和data.sql:

create

table book (

id bigint

notnull

auto_increment

, title varchar

(128

)not

null

, category_id bigint

,primary

key(id));

create

table category (

id bigint

notnull

auto_increment

, name varchar

(128

)not

null

,primary

key(id)

);

insert

into book(id,title,category_id)

values(1

,'the hobbit',1

);insert

into book(id,title,category_id)

values(2

,'the rabbit',1

);insert

into category(id,name)

values(1

,'category'

);

我們看一下怎麼從book中刪除一條資料:

@test

public

void

whendeletebyidfromrepository_thendeletingshouldbesuccessful()

再看一下category的刪除:

@test

public

void

whendeletingcategories_thenbooksshouldalsobedeleted()

再看一下book的刪除:

@test

public

void

whendeletingbooks_thencategoriesshouldalsobedeleted()

因為我們只在category中指定了cascade = cascadetype.all, 所以刪除category的時候可以刪除相關聯的book,但是刪除book的時候不會刪除相關聯的category。

本文的例子可以參考

Spring Boot JPA 命名規則

一 常用規則速查 1 and 並且 2 or 或 3 is,equals 等於 4 between 兩者之間 5 lessthan 小於 6 lessthanequal 小於等於 7 greaterthan 大於 8 greaterthanequal 大於等於 9 after 之後 時間 10 be...

SpringBoot JPA常用註解

就像 table註解用來標識實體類與資料表的對應關係類似,column註解來標識實體類中屬性與資料表中字段的對應關係。column name broker id columndefinition bigint 11 nullable false private long brokerid id co...

Spring Boot JPA訪問Mysql示例

上篇演示了通過m en構建spring boot 專案,引用web模組啟動應用,完成簡單的web 應用訪問,本章內容在此基礎上面加入資料訪問與埠修改,下文 與演例 本用例純手工測試通過,放心入坑 修改預設埠 在src main resources下加入application.properties內容...