簡體   English   中英

如何獲得 n:m 表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM