Я создаю веб-приложение Spring Boot, которое должно получить документ JSON по HTTP, проанализировать его в соответствующем классе сущностей и сохранить объект. JSON является представлением экземпляра Recipe , и один рецепт может иметь несколько Step объектов, связанных с ним.
Recipe. java
@Entity
public class Recipe {
@Id
@GeneratedValue
private Long id;
@NotNull
private String name;
@OneToMany(mappedBy = "recipe", cascade = CascadeType.ALL)
private Set<Step> steps;
// Additional attributes, constructors, getters and setters omitted
}
Шаг. java
@Entity
public class Step {
@Id
@GeneratedValue
private Long id;
@NotNull
private String name;
@ManyToOne
@JoinColumn(name = "RECIPE_ID")
private Recipe recipe;
// Additional attributes, constructors, getters and setters omitted
}
При отправке следующего JSON документ для приложения, однако внешний ключ, ссылающийся на RECIPE_ID
в объекте шага, равен null
, таким образом, нет никакой связи между рецептом и его шагами.
{
"name": "Test recipe",
"description": "Test description",
"type": "Test",
"cookingTime": 45,
"preparationTime": 30,
"thumbnail": "",
"steps": [
{
"number": 1,
"name": "First step",
"content": "Test content",
"image": ""
},
{
"number": 2,
"name": "Second step",
"content": "Test content",
"image": ""
}
]
}
Не должен ли вложенный шаг объекты также сохраняются, так как CascadeType.ALL
было указано? Кроме того, я использую RestController
для обработки запроса и JpaRepository
класс для персистентности.