繁体   English   中英

Java Spring 一对多 多对一

[英]Java Spring one-to-many many-to-one

在此处输入图像描述

在我的 spring 项目中,我想将名为 room 和 product 的实体相互连接起来。
首先,我将添加一家酒店,然后我将添加酒店的房间
一个酒店会有多个房间,一个房间会有一个酒店
我使用 ManyToOne 和 OneToMany 进行连接,但是在列出时房间数组是空的。
我想在产品中列出房间。 我应该怎么写代码

像这样

{
  "status": true,
  "result": [
    {
      "pid": 28,
      "otel_name": "Hi Otel",
      "rooms": [],
      "description": "hi otel",
      "location": {
        "lid": 11,
        "city": "Antalya",
        "district": "Kaş"
      },
      "taxonomies": [
        {
          "tax_id": 25,
          "name": "Disco",
          "description": "Disco",
          "product": null
        },
        {
          "tax_id": 26,
          "name": "Suitable for family",
          "description": "suitable for family",
          "product": null
        }
      ],
      "star_ratings": 5
    }
  ]
}

产品.java

 @Entity
@Data
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer pid;

    @NotBlank(message = "Otel name can not be blank")
    @Length(message = "Otel name must contain min 2 max 50", min = 2, max=50)
    private String otel_name;


    @OneToMany
    @JoinColumn(name="room_id")
    private List<Rooms> rooms =  new ArrayList<>();

    @NotBlank(message = "Description name can not be blank")
    @Length(message = "Description must contain min 2 max", min = 2)
    private String description;

    @ManyToOne
    @JoinColumn(name="lId",referencedColumnName = "lid")
    private Location location;



    @OneToMany(cascade ={CascadeType.MERGE})
    @JoinTable(name="products_taxonomy",joinColumns = @JoinColumn(name="p_id" ),
            inverseJoinColumns = @JoinColumn( name = "t_id", referencedColumnName = "tax_id")
    )
    private List<Taxonomy> taxonomies;


    @PositiveOrZero(message = "Star ratings must be between 0 5")
    @NotNull(message = "Star ratings must be between 0 5")
    @Max(value = 5, message = "Star ratings must be between 0 5")
    private Integer star_ratings;

}

客房.java

    @Entity
@Data
public class Rooms {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer room_id;

    @ManyToOne
    @JoinColumn(name="p_id",referencedColumnName = "pid")
    private Product product;

    @NotBlank(message = "Name can not be blank")
    @Length(message = "Name must contain min 2 max  20 character.", min = 2, max = 20)
    private String name;

    @NotBlank(message = "Description can not be blank")
    @Length(message = "Description must contain min 2 max  255 character.", min = 2, max = 255)
    private String description;


    @PositiveOrZero(message = "Star ratings must be positive")
    @NotNull(message = "Bed not null")
    private Integer bed;

    @PositiveOrZero(message = "Price must be positive")
    @NotNull(message = "price not null")
    private Integer price;

    @PositiveOrZero(message = "Price must be positive")
    @NotNull(message = "price not null")
    private Integer quantity;

}
@OneToMany
@JoinColumn(name="room_id")
private List<Rooms> rooms =  new ArrayList<>();

在此处添加引用的列名称,现在 spring 不知道房间 class 中的 ID 是什么

尝试这个:

@OneToMany(mappedBy = "product", cascade = CascadeType.ALL)
private List<Rooms> rooms =  new ArrayList<>();



@ManyToOne(fetch = FetchType.LAZY)
private Product product;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM