enter image description here

В моем весеннем проекте я хочу соединить объекты с именами 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
    }
  ]
}

Product.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;

}

Rooms.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;

}
0
Gökhan Şahiner 1 Окт 2022 в 20:27

2 ответа

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

Добавьте сюда имя ссылочного столбца, теперь Spring не знает, что такое идентификатор в классе комнат

1
Karol Wolny 1 Окт 2022 в 20:46
Как сейчас написано, ваш ответ неясен. Пожалуйста, отредактируйте, чтобы добавить дополнительные сведения, которые помогут другим понять, как это отвечает на заданный вопрос. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.
 – 
Community
6 Окт 2022 в 00:11

Попробуй это:

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



@ManyToOne(fetch = FetchType.LAZY)
private Product product;
0
Sk Nur Hasan 8 Окт 2022 в 14:24