一对多的关系如何在Spring Boot中保存数据

问题描述 投票:0回答:2

以下是我的商店实体

@Entity
@Table(name="stores")
public class Stores {
    @Id
    @GeneratedValue
    private Long id;

    @Column(name ="incharge_id")
    private Integer inchargeId;

    @Column(name = "store_name")
    private String storeName;

    @OneToMany(mappedBy = "stores",
            fetch = FetchType.LAZY,
            cascade = CascadeType.ALL)
    private Set<Items> items;

    public Set<Items> getItems() {
        return items;
    }

    public void setItems(Set<Items> items) {
        this.items = items;
        for (Items item : items) {
            item.setStores(this);
        }
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Integer getInchargeId() {
        return inchargeId;
    }

    public void setInchargeId(Integer inchargeId) {
        this.inchargeId = inchargeId;
    }

    public String getStoreName() {
        return storeName;
    }

    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }
}

下面是我的物品实体

package bt.gov.dit.inventoryservice.model;

import javax.persistence.*;
import java.util.Date;

@Entity
@Table(name = "items")
public class Items {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long Id;

    @Column(name="item_name")
    private String itemName;

    @ManyToOne
    private Categories categories;

    @ManyToOne(fetch = FetchType.LAZY)
    //@JoinColumn(name = "book_category_id", referencedColumnName = "id")
    @JoinColumn(name = "stores_id", nullable = false,referencedColumnName = "id")
    private Stores stores;

    @Column(name="insert_date")
    private Date insertDate;

    @Column(name="update_date")
    private Date updateDate;

    public Long getId() {
        return Id;
    }

    public void setId(Long id) {
        Id = id;
    }

    public String getItemName() {
        return itemName;
    }

    public void setItemName(String itemName) {
        this.itemName = itemName;
    }

    public Categories getCategories() {
        return categories;
    }

    public void setCategories(Categories categories) {
        this.categories = categories;
    }

    public Stores getStores() {
        return stores;
    }

    public void setStores(Stores stores) {
        this.stores = stores;
        stores.getItems().add(this);
    }

    public Date getInsertDate() {
        return insertDate;
    }

    public void setInsertDate(Date insertDate) {
        this.insertDate = insertDate;
    }

    public Date getUpdateDate() {
        return updateDate;
    }

    public void setUpdateDate(Date updateDate) {
        this.updateDate = updateDate;
    }
}

我之间存在一对多关系。一个商店可以有很多物品。但是我不知道如何在商店里插入物品。我尝试了默认保存的Jpa存储库,但是它代替了store_id(这是外键)保存了null。谁能告诉我如何实施该服务?

mysql spring-boot jpa one-to-many
2个回答
0
投票

将会是下面的样子。

Stores stores = new Stores();
stores.setStoreName("store name");
// Set other fields of store entity

Item item1 = new Item();
item1.setItemName("item name 1");
// Set other fields of item entity

Item item2 = new Item();
item2.setItemName("item name 2");
// Set other fields of item entity

// Call setItems

// Call getItems in a Set class object like Set<Item> items;

stores.setItems(items);
storesService.save(stores); // it will save all items with foreign key.

© www.soinside.com 2019 - 2024. All rights reserved.