当我从数据库中获取所有列表ob书籍时,一切正常。我使用方法" public List listBooks()"在我的DAO课程中。但是当我尝试通过一些参数过滤书籍时抛出其他方法:" public List listBooksFiltered(String title,String author)" ,我有例外。
你有部分books.jsp文件:
你有@Controller的一部分
@RequestMapping(value = "books", method = RequestMethod.GET)
public String listBooks (Model model) {
model.addAttribute("book", new Book());
model.addAttribute("listBooks", this.bookService.listBooks());
return "books";
}
@RequestMapping(value = "/books/filtering", method = RequestMethod.POST)
public String listBooksFiltered (@RequestParam("title") String title, @RequestParam("author") String author, Model model) {
model.addAttribute("book", new Book());
model.addAttribute("listBooks", this.bookService.listBooksFiltered(title, author));
return "books";
}
你有部分BookDaoImpl.class:
@Override
@SuppressWarnings("unchecked")
public List<Book> listBooks() {
Session session = this.sessionFactory.getCurrentSession();
List<Book> bookList = session.createQuery("from Book").list(); // special query for loading all objects Book.class
for(Book book: bookList) {
logger.info("Book list: " + book);
}
return bookList;
}
@Override
@SuppressWarnings("unchecked")
public List<Book> listBooksFiltered(String title, String author) {
Session session = this.sessionFactory.getCurrentSession();
Query query = session.createQuery("from Book where bookTitle = :paramTitle");
query.setParameter("paramTitle", title);
List<Book> bookList = query.list();
for(Book book: bookList) {
logger.info("Book list: " + book);
}
return bookList;
}
答案 0 :(得分:0)
好的,我有一个解决方案!原因是:
我忘了在服务类方法中键入@Transactional注释,它位于控制器和Dao类之间。所以很可能Hibernate停止了对这种方法的计算。