2015-09-16 51 views
-1

我的控制器類是越來越休眠異常,當我上傳圖片

@RequestMapping(value = "/profilePictureUpload", method = RequestMethod.POST) 
public String handleFormUpload(@RequestParam("fileExtension") String fileExtension, @RequestParam("file") MultipartFile file,HttpServletRequest request) { 

    logger.info("In add profile Picture Upload"); 
    String mediaResponse=null;; 
    try { 
     String token = request.getHeader("authToken"); 
     System.out.println("+++++++++++++++token+++++++++++++++++++"+token); 
      User user = userDao.findUserByAuthToken(token); 
      System.out.println("+++++++++++++++USER+++++++++++++++++++"+user); 
      System.out.println("+++++++++++++++file.getBytes()+++++++++++++++++++"+file.getBytes()); 
      if (user != null) { 

        Physician physicain=physicainDao.findPhysicianById(user.getPhysicianId().getPhysicianId()); 
        String fileStoragPath=userOriginalServerPath+"/"+physicain.getPhysicianId(); 
        File file1=new File(fileStoragPath); 
        file1.mkdirs(); 
        String filePath=fileStoragPath+"/"+physicain.getPhysicianId()+System.currentTimeMillis()+fileExtension; 
        FileOutputStream fileOuputStream =new FileOutputStream(filePath); 
        fileOuputStream.write(file.getBytes()); 
        fileOuputStream.close(); 
        /** 
        * Creating thumbnail for media upload 
        */ 
        File thumbnailPath=new File(userThumbnailFilePath+physicain.getPhysicianId()); 
        thumbnailPath.mkdirs(); 
        String thumbnail_path=physicain.getPhysicianId()+"/"+physicain.getPhysicianId()+System.currentTimeMillis()+fileExtension; 

        Thumbnails.of(new File(filePath)).size(75, 75).toFile(new File(userThumbnailFilePath+thumbnail_path)); 
        physicain.setProfileImage("MedikmUserPicture/thumbnail/"+thumbnail_path); 
        physicainDao.update(physicain); 
        mediaResponse="MedikmUserPicture/thumbnail/"+thumbnail_path; 

      }else{ 
        mediaResponse=MedikmConstants.USER_INVALID_AUTHENTICATION__MESSAGE; 

      } 
      System.out.println("================mediaResponse============"+mediaResponse); 
      return mediaResponse; 

     } 
     catch(Exception ex){ 
      ex.printStackTrace(); 
      logger.error("Error in media tag Method :"+ex); 
      return mediaResponse=MedikmConstants.USER_INVALID_AUTHENTICATION__MESSAGE; 
     } 

} 

,並通過上傳圖像獲取休眠例外像

org.hibernate.exception.DataException: Could not execute JDBC batch update 
    at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:102) 

圖像獲取成功上傳,但不知道爲什麼我收到這個醫生類的例外字段名稱是我映射

@Column(name = "Profile_Image") 
private String profileImage; 

請幫我讓我從這個例外中解脫出來。

+1

你是不是想上傳圖像作爲字符串?那是錯的。將它保存爲字節數組。多部分文件具有getBytes方法,請使用它。其次,您必須禁用批量更新以查看實際錯誤併發布更多錯誤信息。最後,您的控制器方法中有太多的邏輯,將其移至服務層。 –

+0

你爲回覆異常是數據截斷:數據太長的'Profile_Image'列在 2015-09-16 17:02:09,598錯誤[org.hibernate.event.def.AbstractFlushingEventListener](http-apr-8080-exec -4) - 無法使數據庫狀態與sessio同步 org.hibernate.exception.DataException:無法在org.hibernate的org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:102) 處執行JDBC批處理更新 。異常.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:275)' – Sumit

+0

就像我說的,禁用你的配置中的批量更新,所以你會有錯誤正確。另外,不要在評論中發佈錯誤,編輯您的主帖並將它們放在那裏。 –

回答

2

Profile_Image sholud是要麼TINYBLOBBLOBMEDIUMBLOBLONGBLOB

根據您的需求,如:

  • TINYBLOB:255個字節最大長度
  • BLOB:最大長度65,535字節
  • MEDIUMBLOB:16,777,215字節
  • LONGBLOB最大長度:4,294,967,295字節

所以,你有最大長度更新您的Profile_Image

例如:如果您將列MEDIUMBLOB它的映射應該是: -

@Lob 
@Column(name="Profile_Image",columnDefinition="mediumblob") 
private byte[] profileImage; 

注意:我同時節省了非常大的圖像得到這個錯誤,我的數據類型爲斑點和我使用mysql的Packet for query is too large . You can change this value on the server by setting the max_allowed_packet variable.

經過一番搜索,我發現

,你必須增加,如果你這個值正在使用大型BLOB列或長字符串。它應該和你想要使用的最大BLOB一樣大。 max_allowed_pa​​cket的協議限制爲1GB。值應該是1024的倍數的 ; nonmultiples向下舍入到最接近的 倍數。

所以我發現SET GLOBAL max_allowed_packet = 1024*1024*number of MB

SET GLOBAL max_allowed_packet = 1024*1024*14 

這將設置允許的數據包14 GB的最大尺寸,請確保您重新啓動MySQL的更改生效

thisthis全實例保存圖像休眠

+0

謝謝你的作品.... – Sumit