Я создаю простой веб-проект с использованием Spring.У меня есть две таблицы в моей базе данных: рецепт и категория.Каждый рецепт относится к одной категории.У меня есть страница, где у меня есть список моих категорий, и после нажатия на одну из них я перехожу на страницу, содержащую список получателей, принадлежащих к этой категории.Под списком у меня есть кнопка, чтобы добавить новый рецепт в категорию.Моя проблема в том, что я не могу присвоить category_id объекту рецепта в форме.Теперь я посылаю контроллеру рецепт со значением category_id = null.Когда я отлаживаю свой код, я получаю правильную категорию в методе addForm () .
Вот мой код:
class Recipe
@Entity
public class Recipe {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column (unique = true)
private String name;
private int time;
@ManyToOne
private Category category;
@Column(length = 1024)
private String ingredients;
@Column(length = 1024)
private String instructions;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getTime() {
return time;
}
public void setTime(int time) {
this.time = time;
}
public String getIngredients() {
return ingredients;
}
public void setIngredients(String ingredients) {
this.ingredients = ingredients;
}
public String getInstructions() {
return instructions;
}
public void setInstructions(String instructions) {
this.instructions = instructions;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public Recipe(String name, int time, Category category, String ingredients, String instructions) {
this.name = name;
this.time = time;
this.category = category;
this.ingredients = ingredients;
this.instructions = instructions;
}
public Recipe() {
}
}
класс Категория:
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true)
private String name;
@OneToMany
@JoinColumn(name = "category_id")
private List <Recipe> recipes;
public List<Recipe> getRecipes() {
return recipes;
}
public void setRecipes(List<Recipe> recipes) {
this.recipes = recipes;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Category(String name) {
this.name = name;
}
public Category() {
}
}
код из класса контроллера:
@RequestMapping("/add")
public String addForm(Category category, Model model)
{
//this category has a proper name and id
model.addAttribute("category", category);
model.addAttribute("recipe", new Recipe() );
return "addRecipe";
}
@RequestMapping("/save")
public String addRecipe( @ModelAttribute Recipe recipe )
{
//here I have a recipe with category_id=null
recipeRepository.save(recipe);
return "redirect:/";
}
и html-файл
<form th:action = "@{/save}" th:object = "${recipe}" method="post">
<input type = "text" th:field = "*{name}" placeholder = "Name"><br>
<input type = "number" th:field = "*{time}" placeholder = "Time"><br>
<input type = "hidden" th:field = "*{category}" th:value = "${category.id}"><br>
<textarea rows = "10" th:field = "*{ingredients}" placeholder="Ingredients"></textarea><br>
<textarea rows = "10" th:field = "*{instructions}" placeholder="Instructions"></textarea><br>
<button type="submit">ADD</button>
Большое спасибо за любую помощь.