Giả sử mình có 2 table là: Book và Category ,
- mình sử dụng Spring Data JPA .
- mình muốn lấy list book theo category và view lên Thymeleaf dạng menu thì phải viết Query như thế nào… dưới là cách của mình nhưng ko in ra data.
Book
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private String description;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "categoryid")
private Category category;
Category
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotEmpty(message="Thể loại không được trống")
private String name;
@NotEmpty(message="Mã không được trống")
private String code;
@OneToMany(mappedBy = "category")
private List<Book> books = new ArrayList<>();
BookRepo
@Query(value = "SELECT b.* FROM book b INNER JOIN category c on b.name = c.id WHERE c.id = ?1", nativeQuery = true)
List<Book> findBookByCategory(Integer categoryId);
Controller
@GetMapping("/{category}")
public String getBookByProduct(@PathVariable("category") Integer category, Model model, HttpSession session) {
List<Book> bookList = bookService.findBookByCategory(category);
if(bookList == null) {
session.setAttribute("message", new MessageResponse("Không có Sách","danger"));
}
for(Book book : bookList ) {
System.out.println(book.toString());
}
model.addAttribute("category", bookList);
return "home/category";
}
View
<h4 class="text-uppercase font-weight-bold mb-3">Thể Loại</h4>
<div class="mt-2 mb-2 pl-2 ">
<div class="custom-control" th:each="category : ${category}" th:value="${category.id}">
<h5>
<a class="btn btn-info popovers" th:href="@{'/category/' + ${category.id}}" >[[${category.name}]]</a>
</h5>
</div>
</div>
phần view danh sách Category đã có nhưng ko hiện Book
thks mn đã giúp