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

Hibernate Java Discussion :

Récupération d'un Blob


Sujet :

Hibernate Java

  1. #1
    Membre régulier Avatar de VinceFromBcn
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 122
    Points
    122
    Par défaut Récupération d'un Blob
    Salut,

    Je ne sais pas si ce poste doit etre plutot dans la partie Struts ou ici mais je me lance qd meme

    J'ai un petit souci au niveau de ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
            FileInputStream in = new FileInputStream("MonFichier.jpg");
     
            bytesRead = 0;
     
            buffer = new byte[8192];
     
            while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
                blob.setBytes(0, buffer);
            }
    Dans ce code j'essaye d'enregistrer le contenu de mon buffer (un fichier image) dans un blob afin de pouvoir l'enregistrer plus tard dans une BD.
    Tous fonctionne lorsque j'essaye avec un fichier mais avec le Blob est qu'il me sort un nullPointerException quand j'essaye d'inserer mon buffer dans le blob??

    qqun a t-il deja eu se probleme?
    Merci de votre aide

  2. #2
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    D'où viens l'objet blob ???

  3. #3
    Membre régulier Avatar de VinceFromBcn
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 122
    Points
    122
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     
            Blob blob = null;
     
            bytesRead = 0;
     
            buffer = new byte[8192];
     
           	while ((bytesRead = in.read(buffer, 0, 8192)) != -1) 
           	{
           		if(buffer == null) log.debug("buffer null");
           		else blob.setBytes(0, buffer);
           	}

    Ca serait a cause de ma declaration du blob avec la valeur null??

  4. #4
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Ben si blob = null, quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    blob.setBytes(0, buffer);
    tu as une NullPointerException.

    Il faut que tu fasse un select sur ta table pour récupérer le blob...

  5. #5
    Membre régulier Avatar de VinceFromBcn
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 122
    Points
    122
    Par défaut
    J'ai essayé de recuperer mon Blob comme tu m'a dit mais pas moyen, j'ai toujours cette valeur null.

    En fait j'utilise Hibernate pour recuperer via mon POJO le blob:

    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
     
     
            FileInputStream in = new FileInputStream("c:\\Test.jpg");
     
            MonPojoVO monPojoVO = (MonPojoVO) convert (MonPOJOVOForm);
     
            int bytesRead = 0;
     
            byte[] buffer = new byte[8192];     
     
           	while ((bytesRead = in.read(buffer, 0, 8192)) != -1) 
           	{
           		if(buffer == null) log.debug("buffer null");
           		monPojoVO.getBlob().setBytes(0, buffer);
           	}
     
            ... Je sauve apres mon objet
    La génération de mon fichier mapping me semble correcte, il va bien chercher le java.sql.Blob comme type:

    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
     
     
    <hibernate-mapping>
        <class
            name="fr.ippon.logsport.model.LanguageVO"
            table="_LANGUAGE"
            dynamic-update="false"
            dynamic-insert="false"
            select-before-update="false"
            optimistic-lock="version">
     
            <id
                name="id"
                column="ID"
                type="java.lang.Long"
                unsaved-value="null">
                <generator class="native">
                </generator>
            </id>
     
            <property
                name="label"
                type="java.lang.String"
                update="true"
                insert="true"
                access="property"
                column="LABEL"/>
     
            <property
                name="locale"
                type="java.lang.String"
                update="true"
                insert="true"
                access="property"
                column="LOCALE"/>
     
            <property
                name="blob"
                type="java.sql.Blob"
                update="true"
                insert="true"
                access="property"
                column="IMAGE"/>
        </class>
    </hibernate-mapping>
    Je passe mon fichier java POJO avec c getter/setter car je crois pas que ca vient de là.

    Là serieux je comprends pas... Peut être je dois passer par un byte[] ou array[]??

  6. #6
    Membre éprouvé
    Profil pro
    Architecte technique
    Inscrit en
    Mars 2002
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Mars 2002
    Messages : 966
    Points : 1 085
    Points
    1 085
    Par défaut
    Je vais déplacer ton post vers le forum J2ee, là plus de gens pourront t'aider sur Hibernate...

    Bon courage...

  7. #7
    Membre régulier Avatar de VinceFromBcn
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 122
    Points
    122
    Par défaut
    Il fallait que je fasse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Hibernate.createBlob(MonInputStream)
    J'ai pu ainsi créer mon blob et l'enregistrer dans ma BD

    Merci Bertrand

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

Discussions similaires

  1. Une erreur 233 de ms sql server
    Par Hokage dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 05/10/2009, 17h40
  2. Erreur 233 sous sql server
    Par brajae85 dans le forum Oracle
    Réponses: 3
    Dernier message: 18/05/2009, 16h12
  3. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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