[英]Spring JPA multiply nested tables with complicated relationship M:N and 1:N
[英]How to get n:m tables?
我有一個 spring-boot 應用程序和一個 MySql 數據庫。 我在披薩桌和澆頭桌之間有一個多對多的關系,所以我制作了一個額外的表格來存儲這些關系。 表格:
CREATE TABLE topping (
id SERIAL PRIMARY KEY,
topping_name VARCHAR(64) NOT NULL,
price INT NOT NULL,
spicy bool NOT NULL
);
CREATE TABLE pizza (
id SERIAL PRIMARY KEY,
pizza_name VARCHAR(64) NOT NULL
);
CREATE TABLE pizza_with_topping (
pizza_id BIGINT UNSIGNED NOT NULL,
topping_id BIGINT UNSIGNED NOT NULL,
CONSTRAINT pizza_with_topping_ibfk_1
FOREIGN KEY(pizza_id)
REFERENCES pizza(id),
CONSTRAINT pizza_with_topping_ibfk_2
FOREIGN KEY(topping_id)
REFERENCES topping(id)
);
在 spring-boot 中,我發現我必須擴展 CrudRepository 接口,我可以從中調用 findAll() 方法來獲取表的內容。 此刻,我得到了所有 3 個表的內容,如下所示:
Iterable<Pizza> pizzasInDb = pizzaRepository.findAll();
Iterable<Topping> toppingsInDb = toppingRepository.findAll();
Iterable<PizzaWithTopping> pizzaToppingConnectionTable = pizzaWithToppingRepository.findAll();
在這基於這 3 個表之后,我手動創建了包含比薩餅名稱和澆頭的對象。 由於我在 Pizza_with_topping 表中設置了外鍵,我想知道是否有更好的方法來獲取這個 model? 也許通過調用內置函數,根據外鍵自動為我制作這個 model object。
就在這里。 您可以使用 JPA 以多對多關系 model 您的域。 如果您使用注釋,則可以使用 @ManyToMany 來實現這里有一個示例
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.