Salut a tous
j'ai la table suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
CREATE TABLE gallet
(
  nom_gallet character varying(20) NOT NULL,
  img_gallet bytea,
  CONSTRAINT pk_gallet PRIMARY KEY (nom_gallet)
)
mappé par le code
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
 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
 
<hibernate-mapping package="hibernateClass">
   <class
      name="Gallet"
      table="gallet"
   >
      <meta attribute="sync-DAO">false</meta>
      <id
         name="nom_gallet"
         type="string"
         column="nom_gallet"
      >
 
      </id>
 
      <property
         name="ImgGallet"
         column="img_gallet"
         type="java.sql.Blob"
         not-null="false"
      />
         <set name="InfoModeleAvions" inverse="true">
         <key column="nom_gallet"/>
         <one-to-many class="InfoModeleAvion"/>
      </set>
   </class>   
</hibernate-mapping>
j'ai mis comme type pour imgGallet java.sql.Blob , je ne sais si exact ou pas .
Bref je rencontre une exception lorsque j'essaie d'inserer un gallet dans la table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Session s=HibernateUtil.currentSession();
      Transaction tx = s.beginTransaction();
      Gallet g=new Gallet();
      File fd = new File("c:\\img.jpg");
      FileInputStream fis;
      try {
         fis = new FileInputStream(fd);
         byte[] b = new byte[512];
      fis.read(b);
           g.setNom_gallet("petit gallet de test");
      g.setImgGallet(Hibernate.createBlob(b));
      s.save(g);
      tx.commit();
      HibernateUtil.closeSession();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Caused by: java.sql.BatchUpdateException: L'élément du batch 0 insert into gallet (img_gallet, nom_gallet) values (17027, petit gallet de test) a été annulé. Appeler getNextException pour en connaître la cause.
   at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2531)
   at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1344)
   at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:343)
   at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2668)
   at org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:70)
   at org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:268)
   ... 8 more
je ne sais si l'erreur provient du fichier de mappage ou de la maniere utilisé pour insérer le blob .
J'ai inserer ces 2 lignes dans le fichier .config la l'exception a changé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
<property name="hibernate.jdbc.batch_size">0</property>
 
      <property name="hibernate.jdbc.use_streams_for_binary">true</property>
l'exception
Code : Sélectionner tout - Visualiser dans une fenêtre à part
org.postgresql.util.PSQLException: ERREUR: la colonne « img_gallet » est de type bytea mais l'expression est de type bigint
Merci d'avance pour votre aide.
Cordialement