Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧支座多对多,带有额外的立柱_Java_Spring_Hibernate_Spring Boot_Rest - Fatal编程技术网

Java 弹簧支座多对多,带有额外的立柱

Java 弹簧支座多对多,带有额外的立柱,java,spring,hibernate,spring-boot,rest,Java,Spring,Hibernate,Spring Boot,Rest,我的Spring Boot应用程序中有三个实体: 配方N->1接收成分1->N成分 它对应于多对多关系。但是,RecipeCredit有一个额外字段“quantity” 我正试着把我的桌子连在一起,这样我就可以得到一份包含配料和数量的食谱 到目前为止,我有以下代码: 配方 @数据 @实体 @表(name=“配方”) 公共类Recipe实现可序列化{ @身份证 @列(name=“id”) @GeneratedValue(策略=GenerationType.IDENTITY) 私有int-id; @

我的Spring Boot应用程序中有三个实体:

配方N->1接收成分1->N成分

它对应于多对多关系。但是,RecipeCredit有一个额外字段“quantity”

我正试着把我的桌子连在一起,这样我就可以得到一份包含配料和数量的食谱

到目前为止,我有以下代码:

配方
@数据
@实体
@表(name=“配方”)
公共类Recipe实现可序列化{
@身份证
@列(name=“id”)
@GeneratedValue(策略=GenerationType.IDENTITY)
私有int-id;
@列(name=“name”)
私有字符串名称;
@列(name=“持续时间”)
私有整数持续时间;
@列(name=“已创建”)
private LocalDate created_on=LocalDate.now();
@列(name=“准备”)
私人字符串准备;
@列(name=“难度”)
私人智力困难;
@列(name=“service”)
私人服务;
@列(name=“定价”)
私人int定价;
@JsonManagedReference(“配方”)
@OneToMany(mappedBy=“recipe”,cascade=CascadeType.ALL,fetch=FetchType.LAZY)
私有列表成分=新的ArrayList();
公共配方(){
}
公共配方(字符串名称、整数持续时间、创建的本地日期、字符串准备、整数难度、整数服务、整数定价){
this.name=名称;
这个。持续时间=持续时间;
this.created_on=created_on;
这个。准备=准备;
这个。困难=困难;
这个服务=服务;
这个。定价=定价;
}
}
成分
@数据
@实体
@表(名称=“成分”)
公共类实现了可序列化{
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“id”)
私有int-id;
@列(name=“name”)
私有字符串名称;
@JsonManagedReference(“成分”)
@OneToMany(mappedBy=“recipe”,cascade=CascadeType.ALL)
私有列表RecipeIngElements=new ArrayList();
公共成分(){
}
公共成分(整数id、字符串名称、列表接收成分){
this.id=id;
this.name=名称;
this.recipeIngredients=recipeIngredients;
}
}
接收客户
@实体
@表(name=“配方\配料”)
@资料
公共类RecipeIngCredit实现可序列化{
@嵌入ID
public RecipeIngredientId RecipeIngredientId=新RecipeIngredientId();
@JsonBackReference(“配方”)
@manytone(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@MapsId(“配方id”)
私家菜谱;
@JsonBackReference(“成分”)
@manytone(cascade=CascadeType.ALL,fetch=FetchType.LAZY)
@MapsId(“成分id”)
私人成分;
@列(名称=“数量”)
私有字符串数量;
公众参与方(){
System.out.println(“[RecipeingCredit]未调用参数构造函数”);
}
公共接收成分(配方、配料、串量){
this.recipe=配方;
这个成分=成分;
这个。数量=数量;
}
}
最后,我收到了信用证

@可嵌入
公共类RecipeIngRedentid实现可序列化{
私有静态最终长serialVersionUID=1L;
私人int-U-id;
私人内部身份证;
公共ReceiveCreditId(){
}
公共接收方id(内部配方id、内部配料id){
this.recipe\u id=recipe\u id;
this.component\u id=component\u id;
}
public int getRecipe_id(){
返回配方标识;
}
公共无效设置配方id(int配方id){
this.recipe\u id=recipe\u id;
}
public int getu id(){
返回成分标识;
}
公共无效设置成分id(内部成分id){
this.component\u id=component\u id;
}
@凌驾
公共布尔等于(对象o){
如果(this==o)返回true;
如果(o==null | | getClass()!=o.getClass())返回false;
RecipeIngredientId that=(RecipeIngredientId)o;
return recipe\u id==that.recipe\u id&&
配料_id==that.component_id;
}
@凌驾
公共int hashCode(){
返回Objects.hash(配方id、成分id);
}
}
在我的浏览器中,我可以请求所有配方,并获得以下信息:

理想情况下,我希望获得如下成分:


...
"ingredients": [
    {
        "name": "salad",
        "quantity: 2
    }
]

最后,Spring/Hibernate是否可以创建一个新的配方,并在一个请求中添加新的配料?或者我应该先制作配料,然后把它们传给食谱