Как работать со связью ManyToMany в Spring-проекте?

Есть небольшой Spring-проект с классами Order и Dish, Заказ и Блюдо соответственно. Есть база данных PostgreSQL, где соответственно у меня есть таблица для класса Заказ и Блюдо. В какой-то момент мне понадобилось, чтобы в Заказе у покупателя была возможность покупать несколько Блюд. Мне посоветовали для реализации этой мысли использовать связь Многие ко многим. Я пошел в БД, создал третью таблицу и, как мне кажется, создал связь из двух таблиц многие ко многим. Вот код по которому я реализовал связь:

create table order_dish(order_id int references pg_order (id)
                       on update cascade on delete cascade,
                       dish_id int references dish(id)
                       on update cascade, constraint order_dish_pkey primary key
                       (order_id, dish_id));

Затем я перешел в сам код проекта, и стал расписывать аннотации @Column, @ManyToMany, @Table и т.д. В классе Блюда(Dish) выдает ошибку 'Many To Many' attribute type should be a container. Подскажите пожалуйста, верно ли я все делаю и в чем может быть моя ошибка?

Класс Order:

package com.tinychiefdelights.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Data;

import javax.persistence.*;
import java.util.Date;
import java.util.List;

@Data
@Entity
@Table(name = "pg_order", schema = "public")
public class Order {

    public Order(){ // Пустой конструктор для Hibernate

    }

    public Order(/*Customer customer,*/ String address,
                 String phoneNumber, Date dateOrder, /* Cook cook,*/
                 List<Dish> dishes, boolean orderStatus) { // Базовый конструктор

//        this.customer = customer;
        this.address = address;
        this.phoneNumber= phoneNumber;
        this.dateOrder = dateOrder;
//        this.cook = cook;
        this.dishes = dishes;
        this.orderStatus = orderStatus;
    }

    // Поля
    private @Id @GeneratedValue Long id;


//    @ManyToOne(fetch= FetchType.LAZY, cascade= CascadeType.ALL)
//    @JsonBackReference
//    private Customer customer;

    @Column(name = "address")
    private String address;

    @Column(name = "phone_number")
    private String phoneNumber;

    @Column(name = "date_order")
    private Date dateOrder;

//    @ManyToOne(fetch= FetchType.LAZY, cascade= CascadeType.ALL)
//    @JsonBackReference
//    private Cook cook;

    @ManyToMany(mappedBy = "order", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @JsonManagedReference
    private List<Dish> dishes;

    @Column(name = "order_status")
    private boolean orderStatus;
}

Класс Dish:

package com.tinychiefdelights.model;

import com.fasterxml.jackson.annotation.JsonBackReference;
import com.fasterxml.jackson.annotation.JsonManagedReference;
import lombok.Data;

import javax.persistence.*;
import java.util.List;

@Data
@Entity
public class Dish {

    public Dish(){ // Пустой конструктор для Hibernate

    }

    public Dish(String dishName, double dishCost/*, List<Cook> cookList*/,
                short weight, short cookingTime, String aboutDish) { // Базовый конструктор

        this.dishName = dishName;
        this.dishCost = dishCost;
//        this.cookList = cookList;
        this.weight = weight;
        this.cookingTime = cookingTime;
        this.aboutDish = aboutDish;
    }

    // Поля
    private @Id @GeneratedValue Long id;

    @Column(name = "name")
    private String dishName;

    @Column(name = "dish_cost")
    private double dishCost;

//    @OneToMany(mappedBy = "dish", fetch = FetchType.LAZY, cascade = CascadeType.ALL)
//    @JsonManagedReference
//    private List<Cook> cookList;

    @Column(name = "weight")
    private short weight;

    @Column(name = "cooking_time")
    private short cookingTime;

    @Column(name = "about_dish")
    private String aboutDish;

    @ManyToMany(fetch= FetchType.LAZY, cascade= CascadeType.ALL)
    @JsonBackReference
    private Order order; // ВЫДАЕТ ОШИБКУ 'Many To Many' attribute type should be a container!!!!!!!
}

Схема базы данных:

enter image description here


Ответы (1 шт):

Автор решения: Artur Vartanyan

Order тоже должен быть списком, раз @ManyToMany связь:

    @ManyToMany(mappedBy = "dishes", fetch= FetchType.LAZY, cascade= CascadeType.ALL)
    private List<Order> ordersList;
→ Ссылка