IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Boot Java Discussion :

Erreur Upload de fichier : org.hibernate.type.SerializationException could not serialize


Sujet :

Spring Boot Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut Erreur Upload de fichier : org.hibernate.type.SerializationException could not serialize
    Bonjour

    J'essaie "d'uploader" un fichier via un formulaire dans mon application spring boot, mais je reçois ce message d'erreur:

    org.springframework.orm.jpa.JpaSystemException: could not serialize; nested exception is org.hibernate.type.SerializationException: could not serialize
    J'utilisa ajax pour la transmission des données vers le contrôleur.

    voici mon formulaire:

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     <form:form  modelAttribute="ajouter-medecin" method="POST" enctype="multipart/form-data" id="form_ajouter_medecin" >
                        <div class="card-box">
                            <h3 class="card-title" >Informations personnelles!</h3>
                            <div class="text-center m-t-20">
                            	<span class="resultat text-center"> </span>
                       	    </div>
     
                            <div class="row">
                                <div class="col-md-12">
                                    <div class="profile-img-wrap">
                                        <img class="inline-block" id="blah" src="#" alt="">
                                        <div class="fileupload btn">
                                            <span class="btn-text">Ajouter une photo</span>
                                            <input class="upload" type="file" id="imgInp" name="files">
                                            <span class="erreur erreur_image" ></span>
                                        </div>
                                    </div>
                                    <div class="profile-basic">
                                        <div class="row">
                                        <div class="col-md-6">
                                                <div class="form-group form-focus">
                                                <form:label path="matricule" class="focus-label">Matricule:<span class="text-danger">*</span></form:label>
                                                 <form:input path="matricule" id="matricule" class="form-control floating" />
    											 <span class="erreur erreur_matricule" ></span>   
                                                </div>
                                            </div>

    Voici mon fichier ajax:

    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     var form = $('#form_ajouter_medecin')[0];
    	  var formData = new FormData(form);
     
    	  /* Send the data using post and put the results in a div */
    	  request =$.ajax({
    		  type: "post",
    		  enctype: 'multipart/form-data',
    		  url: "ajouter-medecin",     
    	      data: formData,
    	      processData: false,
    	        contentType: false,
    	        cache: false,
    	      beforeSend: function() {
    	        $('#load-img').show();
    	        },
    	      success: function(data, textStatus, jqXHR){
    	          $('#load-img').hide();
    	          console.log("SUCCESS : ", data);
    	          var result=data.split("+");
     
    	          var t = result[0];
     
     
                      console.log(t);
                      if(t==="ok" )
     
                      {     
                    	  alert('Médecin ajouté avec succès!');
                    	  window.location = 'medecins';
                      }
                      else
                      {
                           $('.resultat').html(t);
                       $('.resultat').css('color', 'red');
                       $('html,body').animate({scrollTop: $("#monancre").offset().top}, 'slow'      );
                      }
     
     
    	      },
    	      error:function(jqXHR, textStatus, errorThrown){
    	           $('#load-img').hide();
    	           console.log("ERROR : ", jqXHR.responseText);
                       $('.erreur_user').html("Impossible de se connecter à la BDD!");
    	      }  
    	  });
    	  return false;
    	  }

    Et voici mon contrôleur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    @RequestMapping(value = "/ajouter-medecin", method = RequestMethod.GET)
    	public String showAjouterMedecinPage(ModelMap model) {
    		model.put("name", getLoggedinUserName());
    		model.addAttribute("ajouter-medecin", new Medecin());
    		return "ajouter-medecin";
    	}
     
     
    @RequestMapping(value = "/ajouter-medecin", method = RequestMethod.POST)
    	public ResponseEntity<?> addMedecin(@ModelAttribute Medecin medecin, BindingResult result) {
     
    		String rst = null;
     
    		if (result.hasErrors()) {
    			return new ResponseEntity<>("Error: " , HttpStatus.BAD_REQUEST);
    		}
     
    		Medecin medecinExist = medecinService.findByMatricule(medecin.getMatricule());
    		if (medecinExist != null) {
    			return new ResponseEntity<>("Ce Matricule exite déjà!!!: " , HttpStatus.BAD_REQUEST);
    		} 
    		else
    		{
    			//////////
    			   try {
     
    				   rst = this.saveUploadedFiles(medecin.getFiles());
     
    		        }
    		        // Here Catch IOException only.
    		        // Other Exceptions catch by RestGlobalExceptionHandler class.
    		        catch (IOException e) {
    		            e.printStackTrace();
    		            return new ResponseEntity<>("Error: " + e.getMessage(), HttpStatus.BAD_REQUEST);
    		        }
     
     
    			///////////
     
    			medecinService.saveMedecin(medecin);
    			return new ResponseEntity<String>("ok" + result, HttpStatus.OK);
    		}	
     
    	}
     
    private String saveUploadedFiles(MultipartFile[] files) throws IOException {
     
            // Make sure directory exists!
            File uploadDir = new File(UPLOAD_DIR);
            uploadDir.mkdirs();
     
            StringBuilder sb = new StringBuilder();
     
            for (MultipartFile file : files) {
     
                if (file.isEmpty()) {
                    continue;
                }
                String uploadFilePath = UPLOAD_DIR + "/" + file.getOriginalFilename();
     
                byte[] bytes = file.getBytes();
                Path path = Paths.get(uploadFilePath);
                Files.write(path, bytes);
     
                sb.append(uploadFilePath).append("<br/>");
            }
            return sb.toString();
        }

    Je ne sais vraiment pas ce qui cloche.

    Merci

  2. #2
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Bon j'ai pu trouver la solution. En fait dans mon bean, j'avais créé une propriété pour le champ fichier:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private MultipartFile[] files;
    Or cela m'a créé une colonne nommée files dans ma base de données et apparemment c'était la cause de mon problème. J'ai donc supprimé cette colonne et ajouté @transient pour empêcher la création de la colonne dans la bd:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Transient
    	private MultipartFile[] files;
    Et ça marche.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. org.hibernate.type.SerializationException: could not deserialize
    Par lotfiMahmoud dans le forum Hibernate
    Réponses: 3
    Dernier message: 01/02/2016, 11h51
  2. Réponses: 9
    Dernier message: 18/12/2014, 08h47
  3. Réponses: 0
    Dernier message: 21/05/2014, 16h19
  4. erreur java.lang.NoClassDefFoundError: org/hibernate/Session
    Par faty_br dans le forum Développement Web en Java
    Réponses: 10
    Dernier message: 13/04/2011, 14h26
  5. Réponses: 1
    Dernier message: 30/09/2008, 17h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo