2014-10-16 59 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