Mam problem z tworzeniem prawidłowego kontolera i formularz dodającego pole, które jest połaczone relacją many to many. Czyli tworzenie nowego produktu, w którym stworzę nową kategorię
Encja Produkt

@Table(name = "products")
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "product_id")
    private Long id;
    private String name;
    private BigDecimal price;
    @ManyToMany(cascade = CascadeType.ALL,mappedBy = "products")
    private List<Category> categories=new ArrayList<>();
}

Encja Kategoria

@Table(name = "categories")
public class Category {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "category_id")
    private Long id;

    private String name;

    private String description;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name = "join_category_product", joinColumns = {@JoinColumn(name = "category_id", referencedColumnName = "category_id")},
            inverseJoinColumns = {@JoinColumn(name = "product_id", referencedColumnName = "product_id")})
    private List<Product> products=new ArrayList<>();}```

Kontroler

 @GetMapping("/add")
    public String add(Model model) {
        model.addAttribute("category", new Category());
        model.addAttribute("product", new Product());
        return "addProduct";
    }
    @PostMapping("/add")
    public String add(Model model,
                      @Valid @ModelAttribute("product") Product product,
                      Category category,BindingResult result ) {
        product.getCategories().add(category);
        category.getProducts().add(product);
        repository.save(product);

        return "addProduct";
    }

Widok/Formularz

form class="form-horizontal" th:action="@{/product/add}" method="post" th:object="${product}">
            <fieldset>
                <legend class="center-block">Nowy produkt informacje</legend>
                <div class="form-group">
                    <label for="name">Nazwa</label>
                    <input type="text" class="form-control" id="name" th:field="${product.name}" required="required"
                           placeholder="nazwa" name="name"/>
                </div>

                <div class="form-group">
                    <label for="category">Kategoria</label>
                    <input type="text" class="form-control" id="category" required="required"
                           placeholder="kategoria" name="category_name"  />
                </div>
                </div>