Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2522 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [hibernate][oracle 10g]enregistrer un BLOB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[hibernate][oracle 10g]enregistrer un BLOB

n°1061268
crash_tete
Posté le 26-04-2005 à 14:33:46  profilanswer
 

Bonjour,
 
Voila, j'ai un objet SibImage qui contient l'adresse de mon image.  :pt1cable:  
Mon datamodel contient un attribut : SibImage image;
Je crée donc un type hibernate pour pouvoir transfomé mon adresse d'image en BLOB oracle.
 
Voci ma classe SibImageBlobType (seule la méthoe Set nous intéresse) :
 

Code :
  1. public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
  2.     if (value == null) {
  3.       // pas d'image
  4.       st.setNull(index, Types.BLOB);
  5.       return;
  6.     }
  7.     InputStream inStream = null;
  8.     try {
  9.       // création d'une connexion vers l'image
  10.       URLConnection urlCnx = ((SibImage) value).getImageUrl().openConnection();
  11.       //récupération du flux
  12.       inStream = urlCnx.getInputStream();
  13.       //    lecture du flux et écriture dans un tableau de bytes
  14.       ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(1024);
  15.       for (int val; (val = inStream.read()) != -1;) {
  16.         byteArrayStream.write(val);
  17.       }
  18.       st.setBlob(index, BLOB.empty_lob());
  19. }


 
ca c'est ce qui marche, normal je ne fais rien, mais bon l'insertion d'un blob vide fonctionne correctement.
 
Donc si je rajoute ceci :
 

Code :
  1. public void nullSafeSet(PreparedStatement st, Object value, int index) throws HibernateException, SQLException {
  2.     if (value == null) {
  3.       // pas d'image
  4.       st.setNull(index, Types.BLOB);
  5.       return;
  6.     }
  7.     InputStream inStream = null;
  8.     try {
  9.       // création d'une connexion vers l'image
  10.       URLConnection urlCnx = ((SibImage) value).getImageUrl().openConnection();
  11.       //récupération du flux
  12.       inStream = urlCnx.getInputStream();
  13.       //    lecture du flux et écriture dans un tableau de bytes
  14.       ByteArrayOutputStream byteArrayStream = new ByteArrayOutputStream(1024);
  15.       for (int val; (val = inStream.read()) != -1;) {
  16.         byteArrayStream.write(val);
  17.       }
  18.             Connection conn = st.getConnection().getMetaData().getConnection();
  19.       BLOB blob = BLOB.createTemporary(conn, false, oracle.sql.BLOB.DURATION_SESSION);
  20.       blob.open(BLOB.MODE_READWRITE);
  21.       OutputStream out = blob.getBinaryOutputStream();
  22.       try {
  23.         out.write(byteArrayStream.toByteArray());
  24.         out.flush();
  25.         out.close();
  26.       }
  27.       catch (IOException e) {
  28.         throw new SQLException("failed write to blob" + e.getMessage());
  29.       }
  30.       blob.close();
  31.       ((oracle.jdbc.OraclePreparedStatement) (st)).setBLOB(index, blob);
  32. }


 
j'obtiens cette erreur :
 

Code :
  1. Caused by: java.lang.NoSuchMethodError: oracle.sql.BLOB.createTemporary(Ljava/sql/Connection;ZI)Loracle/sql/BLOB;
  2.    at fr.ggl.fwk.service.hibernate.types.SibImageBlobType.nullSafeSet(SibImageBlobType.java:119)


 :fou:

mood
Publicité
Posté le 26-04-2005 à 14:33:46  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [hibernate][oracle 10g]enregistrer un BLOB

 

Sujets relatifs
Oracle et MySQL, même protocole réseau ?Probleme portage mysql -> oracle (JDBC)
Enregistrer le contenu d'un jpanel au format eps ![ORACLE/PHP] Disparition champs NULL dans mon resultset
base de donnees Oracle et C++/Cinterroger une BDD Oracle à l'aide de C
interroger une BDD Oracle à l'aide de C++index sur oracle
[oracle] codage de l'information[Oracle] Connexion à distance
Plus de sujets relatifs à : [hibernate][oracle 10g]enregistrer un BLOB


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR