【问题标题】:one to many relationship how to save data in spring boot一对多关系如何在spring boot中保存数据
【发布时间】:2020-09-02 08:29:22
【问题描述】:

下面是我的商店实体

@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;
    }
}

他们之间是一对多的关系。一家商店可以有许多商品。但我不知道如何使用 stores 插入项目。我已经尝试过 Jpa respoistory 的默认保存,但是代替 stores_id (这是外键)它保存 null 。谁能告诉我如何实现该服务?

【问题讨论】:

标签: mysql spring-boot jpa one-to-many


【解决方案1】:

如下所示。

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.

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-18
    • 2020-08-02
    • 2018-02-10
    • 1970-01-01
    相关资源
    最近更新 更多