Bonjour j'ai une erreur lors de l'utilisation d'hibernate que je n'arrive pas à résoudre:

voici ma requête:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
dao.addMarchandise( new Marchandise( 200, 10, "ordianteur" ), "CA1" );
voici l'erreur:
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
 
Hibernate: alter table MARCHANDISE drop foreign key FK_jqnth4nuj69b4lb3k7qqwhavj
Hibernate: drop table if exists CARGAISONS
Hibernate: drop table if exists MARCHANDISE
Hibernate: create table CARGAISONS (REF_CARG varchar(255) not null, TYPE_CARG varchar(2) not null, dateLivraison datetime, distance double precision, poidsMax double precision, temperature double precision, primary key (REF_CARG))
Hibernate: create table MARCHANDISE (NUMERO bigint not null auto_increment, nom varchar(2), poids double precision, volume double precision, REF_CARG varchar(255), primary key (NUMERO))
Hibernate: alter table MARCHANDISE add index FK_jqnth4nuj69b4lb3k7qqwhavj (REF_CARG), add constraint FK_jqnth4nuj69b4lb3k7qqwhavj foreign key (REF_CARG) references CARGAISONS (REF_CARG)
Hibernate: insert into CARGAISONS (dateLivraison, distance, poidsMax, TYPE_CARG, REF_CARG) values (?, ?, ?, 'CA', ?)
Hibernate: insert into CARGAISONS (dateLivraison, distance, poidsMax, TYPE_CARG, REF_CARG) values (?, ?, ?, 'CA', ?)
Hibernate: insert into CARGAISONS (dateLivraison, distance, temperature, TYPE_CARG, REF_CARG) values (?, ?, ?, 'CR', ?)
Hibernate: select cargaison0_.REF_CARG as REF_CARG1_0_0_, cargaison0_.dateLivraison as dateLivr3_0_0_, cargaison0_.distance as distance4_0_0_, cargaison0_.poidsMax as poidsMax5_0_0_, cargaison0_.temperature as temperat6_0_0_, cargaison0_.TYPE_CARG as TYPE_CAR2_0_0_ from CARGAISONS cargaison0_ where cargaison0_.REF_CARG=?
Hibernate: select marchandis0_.REF_CARG as REF_CARG5_0_1_, marchandis0_.NUMERO as NUMERO1_1_1_, marchandis0_.NUMERO as NUMERO1_1_0_, marchandis0_.nom as nom2_1_0_, marchandis0_.poids as poids3_1_0_, marchandis0_.volume as volume4_1_0_, marchandis0_.REF_CARG as REF_CARG5_1_0_ from MARCHANDISE marchandis0_ where marchandis0_.REF_CARG=?
Hibernate: insert into MARCHANDISE (nom, poids, volume, REF_CARG) values (?, ?, ?, ?)
Exception in thread "main" org.hibernate.exception.DataException: could not execute statement
	at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:71)
	at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:124)
	at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
	at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:189)
	at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:96)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:58)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2987)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3499)
	at org.hibernate.action.internal.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:81)
	at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:395)
	at org.hibernate.engine.spi.ActionQueue.addResolvedEntityInsertAction(ActionQueue.java:229)
	at org.hibernate.engine.spi.ActionQueue.addInsertAction(ActionQueue.java:209)
	at org.hibernate.engine.spi.ActionQueue.addAction(ActionQueue.java:193)
	at org.hibernate.event.internal.AbstractSaveEventListener.addInsertAction(AbstractSaveEventListener.java:321)
	at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:286)
	at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:192)
	at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:125)
	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206)
	at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191)
	at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
	at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
	at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:683)
	at org.hibernate.internal.SessionImpl.save(SessionImpl.java:675)
	at org.hibernate.internal.SessionImpl.save(SessionImpl.java:671)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at org.hibernate.context.internal.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:352)
	at com.sun.proxy.$Proxy2.save(Unknown Source)
	at com.dao.TransportDaoImpl.addMarchandise(TransportDaoImpl.java:28)
	at com.dao.TestDao.main(TestDao.java:14)
ma mehode addMarchandise:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 public void addMarchandise( Marchandise m, String refCarg ) {
        Session session = HibernateUtil.getSessionFactory().getCurrentSession();
        session.beginTransaction();
        Cargaison c = (Cargaison) session.get( Cargaison.class, refCarg );
        m.setCargaison( c );
        c.getMarchandises().add( m );
        session.save( m );
        session.getTransaction().commit();
    }
fichier de mapping Cargaison.hbm.xml
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
 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.dao.Cargaison" table="CARGAISONS">
  	<id name="reference" >
  		<column name="REF_CARG"></column>
  	</id>
  	<discriminator column="TYPE_CARG" type="string" length="2" ></discriminator>
  	<property name="dateLivraison" ></property>
  	<property name="distance"></property>
  	<set name="marchandises" lazy="true" inverse="true">
  		<key column="REF_CARG"></key>
  		<one-to-many class="com.dao.Marchandise"/>
  	</set>
  	<subclass name="com.dao.CargaisonAerienne" discriminator-value="CA">
  		<property name="poidsMax"></property>
  	</subclass>
  	<subclass name="com.dao.CargaisonRoutiere" discriminator-value="CR">
  		<property name="temperature"></property>
  	</subclass>
  </class>
</hibernate-mapping>
marchandise.hbm.xml:
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
 
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="com.dao.Marchandise" table="MARCHANDISE">
  	<id name="numero" column="NUMERO">		
  		<generator class="native"></generator>
  	</id>
  	<property name="nom" length="2"></property>
  	<property name="poids"></property>
  	<property name="volume"></property>
  	<many-to-one name="cargaison" column="REF_CARG"></many-to-one>
  </class>
</hibernate-mapping>