bonjour,
j'ai une relation entre 2 tables customer n--1 admin:un admin peut avoir plusieurs customer et un customer appartient a un seul admin.
j'ai mappe l'association des deux cotes .lajout d'un customer fonctionne bien mais si je veux supprimer un admin (et bien sure les customer liee serons supprime) j'aurais une exception de type :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
could not delete collection: [tn.tucs.core.personnemanagement.Personneadmin.Customer#5]
j'ai utilisé la parametre cascade="all" ,cascade="delte" et cascade="delete-orphin" mais ces toujour la meme erreur
voila le fichier Customer.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 26 oct. 2011 11:58:48 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="tn.tucs.core.customermanagement.Customer" table="CUSTOMER">
        <id name="IdCustomer" type="int">
            <column name="IDCUSTOMER" />
             <generator class="sequence">
             <param name="sequence">seq_customer_id</param>
            </generator>
        </id>
 
        <property name="libelleCustomer" type="java.lang.String">
            <column name="LIBELLECUSTOMER" />
        </property>
        <property name="MatriculeFiscale" type="java.lang.String">
            <column name="matriculecustomer" />
        </property>
        <property name="FaxCustomer" type="java.lang.String">
            <column name="FAXCUSTOMER" />
        </property>
        <property name="TeleCustomer" type="java.lang.String">
            <column name="TELCUSTOMER" />
        </property>
        <property name="SiteWeb" type="java.lang.String">
            <column name="sitecustomer" />
        </property>
        <property name="AdresseCostumer" type="java.lang.String">
            <column name="adressecustomer" />
        </property>
        <property name="PaysCustomer" type="java.lang.String">
            <column name="PAYSCUSTOMER" />
        </property>
        <property name="VilleCustomer" type="java.lang.String">
            <column name="VILLECUSTOMER" />
        </property>
        <property name="EMailCustomer" type="java.lang.String">
            <column name="MAILCUSTOMER" />
        </property>
        <property name="MobileCustomer" type="java.lang.String">
            <column name="MOBILECUSTOMER" />
        </property>
 
       <many-to-one name="Admin" class="tn.tucs.core.personnemanagement.Personneadmin" column="IDADMIN" not-null="true" lazy="false"/> <!-- not-null="true" -->
 
   <!--   <set name="users" cascade="all-delete-orphan" >
            <key column="IDCUSTOMER" />
            <one-to-many class="tn.tucs.core.personnemanagement.Personneuser" />
        </set>-->
    </class>
</hibernate-mapping>

et le fichier Personneadmin.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 26 oct. 2011 11:02:14 by Hibernate Tools 3.4.0.CR1 -->
<hibernate-mapping>
    <class name="tn.tucs.core.personnemanagement.Personneadmin" table="PERSONNEADMIN">
        <id name="idadmin" >
            <column name="IDADMIN" />
            <generator class="sequence">
            <param name="sequence">seq_admin_id</param>
            </generator>
        </id>
        <property name="nomadmin" type="java.lang.String">
            <column name="NOMADMIN" />
        </property>
        <property name="prenomadmin" type="java.lang.String">
            <column name="PRENOMADMIN" />
        </property>
        <property name="cinadmin" type="java.lang.String">
            <column name="CINADMIN" />
        </property>
        <property name="teladmin" type="java.lang.String">
            <column name="TELADMIN" />
        </property>
        <property name="adresseadmin" type="java.lang.String">
            <column name="ADRESSEADMIN" />
        </property>
        <property name="cpadmin" >
            <column name="CPADMIN" />
        </property>
        <property name="villeadmin" type="java.lang.String">
            <column name="VILLEADMIN" />
        </property>
        <property name="paysadmin" type="java.lang.String">
            <column name="PAYSADMIN" />
        </property>
        <property name="loginadmin" type="java.lang.String">
            <column name="LOGINADMIN" />
        </property>
        <property name="pswadmin" type="java.lang.String">
            <column name="PSWADMIN" />
        </property>
 
         <set name ="Customer"  cascade="delete"  lazy="false">
             <key column="IDADMIN" />
             <one-to-many class="tn.tucs.core.customermanagement.Customer"/>
         </set>
 
 
 
    </class>
</hibernate-mapping>
la table customer:
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
-- Table: customer
 
-- DROP TABLE customer;
 
CREATE TABLE customer
(
  idcustomer integer NOT NULL,
  libellecustomer character varying(100),
  matriculecustomer character varying(100),
  faxcustomer character varying(50),
  telcustomer character varying(50),
  sitecustomer character varying(200),
  payscustomer character varying(100),
  villecustomer character varying(100),
  mailcustomer character varying(150),
  mobilecustomer character varying(50),
  adressecustomer character varying(150),
  idadmin integer NOT NULL,
  CONSTRAINT "idCustomer" PRIMARY KEY (idcustomer),
  CONSTRAINT idadmin FOREIGN KEY (idadmin)
      REFERENCES personneadmin (idadmin) MATCH FULL
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
  OIDS=FALSE
);
ALTER TABLE customer OWNER TO postgres;
et la table admin:
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
-- Table: personneadmin
 
-- DROP TABLE personneadmin;
 
CREATE TABLE personneadmin
(
  idadmin bigint NOT NULL,
  nomadmin character varying(50),
  prenomadmin character varying(50),
  cinadmin character varying(50) NOT NULL,
  teladmin character varying(20),
  adresseadmin character varying(150),
  cpadmin bigint,
  villeadmin character varying(50),
  paysadmin character varying(50),
  loginadmin character varying(50),
  pswadmin character varying(50),
  CONSTRAINT idadmin PRIMARY KEY (idadmin),
  CONSTRAINT cin_unique UNIQUE (cinadmin),
  CONSTRAINT "login-unique" UNIQUE (loginadmin)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE personneadmin OWNER TO postgres;
je vous serais reconnaisant
merci