Я хочу сохранить 2 x entity
, author
и book
из одной формы. Как я могу это сделать?
Я знаю, что сначала должен сохранить автора, но я не знаю как. Author
находится в отношениях один-ко-многим с book
.
Я установил cascadetype.ALL
. Я использую тимелист.
<form th:object="${book}" th:action="@{/book/}" method="post">
<input type="hidden" class="form-control" th:field="*{id}"/>
<label>title</label>
<input type="text" class="form-control" th:field="*{title}"/>
<label>isbn</label>
<input type="text" class="form-control" th:field="*{isbn}"/>
<label>description</label>
<input type="text" class="form-control" th:field="*{description}"/>
<label>cat</label>
<ul>
<li th:each="category : ${book.getCategorySet()}" th:text="category.getCategory()"></li>
</ul>
<label>author</label>
<input type="text" class="form-control" th:field="*{author.name}"/>
<input type="submit" value="Submit" />
<input type="reset" value="Reset" />
</form>
authorCommand
@Setter
@Getter
@NoArgsConstructor
public class AuthorCommand {
private long id;
private String name;
private String lastName;
private Set<BookCommand> bookCommandSet = new HashSet<>();
}
bookCommand
@Setter
@Getter
@NoArgsConstructor
public class BookCommand {
private long id;
private String title;
private String isbn;
private String description;
private Set<CategoryCommand> categorySet = new HashSet<>();
private AuthorCommand author;
}
BookController
@RequestMapping(value = "book/new", method = RequestMethod.GET)
public String newBook(Model model){
model.addAttribute("book", new BookCommand());
return "book/form";
}
@RequestMapping(value = "book", method = RequestMethod.POST)
public String saveOrUpdate(@ModelAttribute("book") BookCommand bookCommand){
BookCommand savedBook = bookService.saveBookCommand(bookCommand);
return "redirect:/book/show/"+savedBook.getId();
}