Salut a tous
j'ai la table suivante :
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
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
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(); |
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é
1 2 3
| <property name="hibernate.jdbc.batch_size">0</property>
<property name="hibernate.jdbc.use_streams_for_binary">true</property> |
l'exception
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
Partager