亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring Data Rest 持久化注解

Spring Data Rest 持久化注解

繁星coding 2021-10-13 15:50:10
我正在學習 Spring-Data-REST 并且遇到了涉及我的注釋的障礙。目前我有以下架構:create table user(    ID int NOT NULL auto_increment,     NAME VARCHAR(60) NOT NULL,    PASS VARCHAR(20) NOT NULL,    primary key (ID));create table recipe(    ID int NOT NULL auto_increment,    NAME varchar(60) NOT NULL,     USER_ID int NOT NULL,    primary key (ID),    FOREIGN KEY (USER_ID) REFERENCES user(ID) ON DELETE CASCADE);create table ingredient(    ID int not null auto_increment,    NAME varchar(60) not null,    primary key(ID));create table ingredientsList (    ID int NOT NULL auto_increment,    NAME varchar(60) NOT NULL,    RECIPE_ID int not null,    INGREDIENT_ID int not null,    QUANTITY int not null,    primary key (ID),    foreign key (RECIPE_ID) REFERENCES recipe(ID) on delete cascade,    foreign key (INGREDIENT_ID) references ingredient(ID) on delete cascade);create table direction(    ID int NOT NULL auto_increment,    NAME varchar(60) NOT NULL,    RECIPE_ID int not null,    STEP int not null,    DESCRIPTION varchar(256),    primary key (ID),    foreign key (RECIPE_ID) REFERENCES recipe(ID) on delete cascade);我的 Spring Data REST API 中表示了每個表,除了一個表,即成分列表表。這是我當前的實現,當我運行 .\mvn clean install 時無法正常工作:import java.util.Objects;import java.util.Set;import javax.persistence.Column;import javax.persistence.CascadeType;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.OneToMany;@Entitypublic class IngredientsList extends AbstractEntity {    @ManyToOne(fetch = FetchType.EAGER)    @JoinColumn(nullable=false)    private Recipe recipe;    @OneToMany(mappedBy = "ingredientsList", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)    private Set<Ingredient> ingredients;    @Column(nullable = false)    private Long quantity;    public Recipe getRecipe() {        return recipe;    }    public void setRecipe(Recipe recipe){        this.recipe = recipe;    }
查看完整描述

2 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

您@OneToMany對IngredientsList類的注釋暗示類中應該有一個ingredientsList字段Ingredient,而實際上沒有。在您的架構中,您INGREDIENT_ID的ingredientsList表中有一個字段,這意味著 anIngredientsList只能有一個Ingredient.


我認為你的意思是IngredientsList有很多Ingredient孩子,這意味著ingredient表應該有一個INGREDIENT_LIST_ID字段作為ingredientsList表的外鍵,并且Ingredients類應該有一個ingredientsList字段。該INGREDIENT_ID字段應該從ingredientsList表中刪除。


如果一個IngredientsList應該只有一個Ingredient,那么改變


@OneToMany(mappedBy = "ingredientsList", fetch = FetchType.EAGER, cascade = CascadeType.ALL, orphanRemoval = true)

private Set<Ingredient> ingredients;


@ManyToOne

@JoinColumn("ingredient_id")

private Ingredient ingredient

根據需要添加cascade和orphanRemoval。@ManyToOne默認情況下,A應該急切地獲取連接的數據。


查看完整回答
反對 回復 2021-10-13
  • 2 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號