Я получаю java.lang.IllegalArgumentException: модифицирующие запросы могут использовать void или int / Integer в качестве возвращаемого типа, когда я пытаюсь обновить свою таблицу.
1. thymeleaf
<div class="form-popup" id="myForm">
<form action=""th:action="@{/searchreader(reader_id=${givebook?.getReader()?.getI dNumber()}, book_id=${givebook?.getId()})}" th:object="${givebook}" class="form-container">
<label for="book_id"><b>Book ID</b></label>
<input type="text" name="id" th:value="${reader?.idNumber}" placeholder="Reader ID" hidden/>
<input type="text" th:value="${givebook?.getId()}" placeholder="Enter Book ID" name="book_id" required>
<button type="submit" class="btn">OK</button>
<button type="button" class="btn cancel" onclick="closeForm()">Close</button>
</form>
</div>
2.Controller
@GetMapping({"/searchreader","/searchreader{id}","/searchreader{id}/{book_id}"})
public String searchReaderById(@RequestParam("id") Optional<Long> id, @RequestParam("book_id") Optional<Long> book_id, Model model){
if(id.isPresent()&&book_id.isPresent()){
model.addAttribute("givebook",bookRepository.updateBookSetReaderId(id.get(),book_id.get()));
return "reader/searchreader";
}
else
if(id.isPresent()) {
Reader reader = readerService.findReaderByIdNumber(id.get());
model.addAttribute("reader", reader);
model.addAttribute("messages",readerService.getMessages());
return "reader/searchreader";
} else
{
return "reader/searchreader";}
}
3.Repository
@Transactional
@Modifying(clearAutomatically = true, flushAutomatically = true)
@Query(value = "update Book set reader_id=(select r.id from reader r where r.id_Number=:reader_id) where id=:book_id",nativeQuery = true)
Book updateBookSetReaderId(Long reader_id,Long book_id);
В то время как обновленный оператор возвращаетизмененные строки метода в репозитории должны возвращать void или integer, но когда я изменяю возвращаемый тип void или integer, тогда мой контроллер не работает и мой шаблон тимелист не работает, пока я использую методы из класса Book.
Пожалуйста, любая идея. Спасибо.