【问题标题】:I got Hibernate exception while I create Query创建查询时出现休眠异常
【发布时间】:2018-02-18 19:50:08
【问题描述】:

当我从数据库中获取所有列表 ob 书籍时,一切正常。我在 DAO 类中使用方法“public List listBooks()”。但是当我尝试通过某些参数过滤书籍时抛出其他方法: "public List listBooksFiltered(String title, String author)" ,我得到了异常。


你有books.jsp文件的一部分:

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;
}

【问题讨论】:

  • 你得到什么异常?
  • 消息请求处理失败;嵌套异常是 org.hibernate.HibernateException: No Session found for current thread
  • 根本原因 org.hibernate.HibernateException:没有为当前线程找到会话 org.springframework.orm.hibernate4.SpringSessionContext.currentSession(SpringSessionContext.java:106) org.hibernate.internal.SessionFactoryImpl.getCurrentSession( SessionFactoryImpl.java:1014) com.springapp.mvc.dao.BookDaoImpl.listBooksFiltered(BookDaoImpl.java:85)

标签: java model-view-controller controller


【解决方案1】:

好的,我有一个解决方案!原因是:

我忘记在服务类方法中输入@Transactional注解,在控制器和Dao-class之间。所以可能Hibernate停止了他对这个方法的计算。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-24
    • 2014-08-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多