java如何以Thymeleaf形式显示嵌套对象值
我想将Book和Author实体绑定到html表单(用户将为Book和authors插入数据,这些数据将通过html表单发送到mysql数据库)。我不知道如何装订这本书。作者。名字和书。作者。姓氏在我的百里香表中的值
这本书。java
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String isbn;
@ManyToMany(cascade = CascadeType.ALL) // to save author's data when adding book to db
@JsonIgnoreProperties("books")
@JoinTable(name = "author_book", joinColumns = @JoinColumn(name = "book_id"),
inverseJoinColumns = @JoinColumn(name = "author_id"))
private Set<Author> authors = new HashSet<>();
作者。java
@Entity
public class Author {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String forename;
private String surname;
@ManyToMany(mappedBy = "authors", cascade = CascadeType.ALL) // look -> @ManyToMany in Book
@JsonIgnoreProperties("authors")
private Set<Book> books = new HashSet<>();
书籍控制器。java
(...)
@GetMapping("/book/add")
public ModelAndView addGet() {
ModelAndView m = new ModelAndView();
m.addObject("book", new Book());
m.setViewName("addBook");
return m;
}
@PostMapping("/book/add")
public ModelAndView addBook(Book book, BindingResult br) {
ModelAndView m = new ModelAndView("redirect:/index");
bookService.addBook(book);
m.addObject("book", new Book());
return m;
}
addBook。html
<form th:action="@{/book/add}" th:object="${book}" th:method="post">
<label for="author_name"> Author_Name </label>
<input th:field="*{author}" id="author_name" type="text">
<label for="author_surname"> Author_Surn </label>
<input th:field="*{author}" id="author_surname" type="text">
<label for="title"> Title </label>
<input th:field="*{title}" id="title" type="text">
<label for="isbn"> ISBN </label>
<input th:field="*{isbn}" id="isbn" type="text">
<button type="submit"> Add</button>
</form>
问题在于作者姓名和作者姓氏标签和输入
# 1 楼答案
您只能出于查看目的尝试此代码
根据你的代码,这是一个数据输入表单。但对于多对多关系来说,从同一时间插入具有作者姓名的图书表数据并不是一个好的决定
您可以先保存书籍数据,然后再指定作者姓名
如需更多帮助click this link