2014-10-16 113 views
1

我想保存一篇文章,但我得到一个异常。我不知道我做错了什么。 我有三个实体:User.class,Category.class和Article.class。Hibernate查询超时异常 - 我无法将数据保存到数据库

用户拥有这些atributes:

  • ID
  • 电子邮件
  • 密码
  • 的文章(一到多)

分类有以下

  • 名单属性:

    • ID
    • 类别列表(许多一对多)

    条具有以下属性:

    • ID
    • 标题
    • 内容
    • publishDate
    • 用户(多到一)类别(许多一对多)

    有我的控制器和JSP文件的

  • 名单。

    ArticleController.class

    @Controller 
    public class ArticleController { 
    @Autowired 
    ArticleService articleService; 
    @Autowired 
    CategoryService categoryService; 
    @Autowired 
    UserService userService; 
    
    @ModelAttribute("article") 
    public Article construct(){ 
        return new Article(); 
    } 
    
    @RequestMapping("/admin/clanky") 
    public String articles(Model model){ 
        model.addAttribute("articles", articleService.findAll()); 
        model.addAttribute("categories", categoryService.findAll()); 
        model.addAttribute("users", userService.findAll()); 
        return "articles"; 
    } 
    
    @RequestMapping(value="/admin/clanky", method=RequestMethod.POST) 
    public String saveArticle(@ModelAttribute("article") Article article, BindingResult result){ 
        Date publishDate = new Date(); 
        article.setPublishDate(publishDate); 
        articleService.save(article); 
        return "redirect:/admin/clanky.html?success=true"; 
    } 
    
    @InitBinder 
    public void initBinder(WebDataBinder webDataBinder) { 
        SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm"); 
        dateFormat.setLenient(false); 
        webDataBinder.registerCustomEditor(Date.class, "publishDate", 
          new CustomDateEditor(dateFormat, false)); 
    } 
    
    @InitBinder 
    protected void initBinder(HttpServletRequest request, 
         ServletRequestDataBinder binder) throws Exception { 
        binder.registerCustomEditor(Integer.class, new CustomNumberEditor(
          Integer.class, true)); 
    }} 
    

    article.jsp

    <form:form commandName="article" cssClass="form-horizontal"> 
    <div class="form-group"> 
        <form:hidden path="id" class="form-control input-sm" /> 
    </div> 
    <div class="form-group"> 
        <label for="title" class="col-sm-2 control-label">Title:</label> 
        <div class="col-sm-10"> 
         <form:input path="title" cssClass="form-control" /> 
        </div> 
    </div> 
    <div class="form-group"> 
        <label for="content" class="col-sm-2 control-label">Content:</label> 
        <div class="col-sm-10"> 
         <form:textarea path="content" cssClass="form-control" rows="10" /> 
        </div> 
    </div> 
    <div class="form-group"> 
        <label for="publishDate" class="col-sm-2 control-label">Category:</label> 
        <div class="col-sm-10"> 
         <form:select path="categories" cssClass="form-control"> 
          <c:forEach items="${categories}" var="category"> 
           <form:option class="form-control" value="${category.id}">${category.name}</form:option> 
          </c:forEach> 
         </form:select> 
        </div> 
    </div> 
    <div class="form-group"> 
        <label for="user" class="col-sm-2 control-label">User:</label> 
        <div class="col-sm-10"> 
         <form:select path="user.id" cssClass="form-control"> 
          <c:forEach items="${users}" var="user"> 
           <form:option class="form-control" value="${user.id}">${user.name}</form:option> 
          </c:forEach> 
         </form:select> 
        </div> 
    </div> 
    
    <div class="form-group"> 
        <div class="col-sm-2"> 
         <input type="submit" value="Uložit" class="btn btn-lg btn-primary"> 
        </div> 
    </div> 
    

    谁能帮帮我,好吗?

    有一个堆栈跟踪:

    HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/QueryTimeoutException 
    
    type Exception report 
    
    message Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/QueryTimeoutException 
    
    description The server encountered an internal error that prevented it from fulfilling this request. 
    
    exception 
    
    org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/QueryTimeoutException 
        org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1284) 
        org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:965) 
        org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) 
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
        org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:232) 
        org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) 
    root cause 
    
    java.lang.NoClassDefFoundError: org/hibernate/QueryTimeoutException 
        org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:644) 
        org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:799) 
        org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:669) 
        org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757) 
        org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726) 
        org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:478) 
        org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:272) 
        org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 
        org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
        org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
        com.sun.proxy.$Proxy21.save(Unknown Source) 
        cz.michalsipek.blog.controller.ArticleController.saveArticle(ArticleController.java:55) 
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        java.lang.reflect.Method.invoke(Method.java:606) 
        org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) 
        org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) 
        org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) 
        org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) 
        org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) 
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
        org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:232) 
        org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) 
    root cause 
    
    java.lang.ClassNotFoundException: org.hibernate.QueryTimeoutException 
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) 
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) 
        org.springframework.orm.hibernate3.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:644) 
        org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:799) 
        org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:669) 
        org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:757) 
        org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726) 
        org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:478) 
        org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:272) 
        org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 
        org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179) 
        org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207) 
        com.sun.proxy.$Proxy21.save(Unknown Source) 
        cz.michalsipek.blog.controller.ArticleController.saveArticle(ArticleController.java:55) 
        sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
        sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
        sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
        java.lang.reflect.Method.invoke(Method.java:606) 
        org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:175) 
        org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) 
        org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) 
        org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945) 
        org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876) 
        org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:961) 
        org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:863) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
        org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:837) 
        javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
        org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:232) 
        org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:108) 
    
  • +0

    你可以发布异常的堆栈跟踪吗? – Brian 2014-10-16 20:37:40

    +0

    请在您的问题中包含堆栈跟踪,而不是链接。从[help](http://stackoverflow.com/help/how-to-ask):“如果可以创建一个可以链接到的问题的实例(例如http:// sqlfiddle.com/或http://jsbin.com/),然后这样做 - 但也包括代码在您的问题本身。不是每个人都可以访问外部网站,并且链接可能会随着时间的推移而中断。“ – Brian 2014-10-16 20:44:26

    +0

    好的,我在我的问题中包含了堆栈跟踪。 – 2014-10-16 21:01:14

    回答

    0

    保存de对象时我得到了同样的错误。那很奇怪,但显然休眠不理解0(零)作为@Id列的值。我试图保存一个引用的对象,它的@Id值为0.所以我改变了ID值为1,它的工作原理= S