-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 
Author Message
 Post subject: une relation many-to-many particuliere
PostPosted: Sun Sep 09, 2007 12:07 pm 
Newbie

Joined: Sun Sep 09, 2007 11:52 am
Posts: 5
bonjour d'abord un bravo et merci pour un forum hibernate en français(officiel).
Je vous explique mon problème !!
jais une relation many-to-many entre ma table T_PROFIL et T_OBJET mais avec des éléments supplémentaire dans ma tables relation T_ACCEES_OBJET_PROFIL :
je pense utiliser un composite-element mais je sais pas se qui manque car il cree bien le profil mais ne renseigne pa la table T_ACCEES_OBJET_PROFIL

mes beans:
____________________profil_________________
Code:
public class Profil implements Serializable {
   ........
   private  Set  objets;
   private  Set acceesObjetProfil;

   

   public Set getObjets() {
      return objets;
   }

   public void setObjets(Set objets) {
      this.objets = objets;
   }

   public Profil() {
      
   }

   public Set getAcceesObjetProfil() {
      return acceesObjetProfil;
   }

   public void setAcceesObjetProfil(Set acceesObjetProfil) {
      this.acceesObjetProfil = acceesObjetProfil;
   }

   ..........
}


_________________________AcceesObjetProfil________________________________
   
   private int id;
   private boolean supprimer;
   private Date dateCreation;
   private Date dateModification;
   private int utilisateurCreer;
   private int utilisateurModifier;
   private Objet objet ;
   private Profil profil;
   
   public Objet getObjet() {
      return objet;
   }
   public void setObjet(Objet objet) {
      this.objet = objet;
   }
   public Profil getProfil() {
      return profil;
   }
   public void setProfil(Profil profil) {
      this.profil = profil;
   }
   public AcceesObjetProfil() {
   
   }
   public int getId() {
      return id;
   }
   public void setId(int id) {
      this.id = id;
   }
   public boolean isSupprimer() {
      return supprimer;
   }
   public void setSupprimer(boolean supprimer) {
      this.supprimer = supprimer;
   }
   public Date getDateCreation() {
      return dateCreation;
   }
   public void setDateCreation(Date dateCreation) {
      this.dateCreation = dateCreation;
   }
   public Date getDateModification() {
      return dateModification;
   }
   public void setDateModification(Date dateModification) {
      this.dateModification = dateModification;
   }
   public int getUtilisateurCreer() {
      return utilisateurCreer;
   }
   public void setUtilisateurCreer(int utilisateurCreer) {
      this.utilisateurCreer = utilisateurCreer;
   }
   public int getUtilisateurModifier() {
      return utilisateurModifier;
   }
   public void setUtilisateurModifier(int utilisateurModifier) {
      this.utilisateurModifier = utilisateurModifier;
   }

}
Mes Mapping
______________________Profil__________________________________
?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
   "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
   "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.gestionStock.bean">
   <class name="Profil" table="T_PROFIL" proxy="Profil" lazy="true">

      <id name="id" column="CODE_PROFIL">
         <generator class="increment" />
      </id>

      <property name="libelle" column="LIBELLE_PROFIL"
         not-null="true" />
      <property name="actif" column="ACTIF" not-null="true" />
      <property name="supprimer" column="SUPPRIMER" not-null="true" />

      <property name="dateCreation" column="DATE_CREATION"
         not-null="true" />
      <property name="dateModification" column="DATE_MODIFICATION"
         not-null="true" />
      <property name="utilisateurCreer" column="UTILISATEUR_CREER"
         not-null="true" />
      <property name="utilisateurModifier"
         column="UTILISATEUR_MODIFIER" not-null="true" />

      <set name="acceesObjetProfil" table="T_ACCEES_OBJET_PROFIL" lazy="false">
         <key column="CODE_PROFIL" />
         <composite-element class="AcceesObjetProfil">
            <property name="supprimer" type="boolean" column="SUPPRIMER"  not-null="true" />
            <property name="dateCreation" type="date" column="DATE_CREATION" not-null="true" />
            <property name="dateModification" type="date" column="DATE_MODIFICATION" not-null="true" />
            <property name="utilisateurCreer" type="string" column="UTILISATEUR_CREER" not-null="true" />
            <property name="utilisateurModifier" type="string"  column="UTILISATEUR_MODIFIER" not-null="true" />
            <many-to-one name="objet" class="Objet" not-null="true" />
         </composite-element>
      </set>
   </class>
</hibernate-mapping>

Mon MAIN
   public static void main(String[] args) {
      ProfilDAO dao = ProfilDAO.getNewInstance();
      Profil  obj= new Profil();
      obj.setId(1);
      obj.setLibelle("libelle");
      
      List lObjets = new ArrayList();
      //charger les objet liés au profil choisi
      Set  lObjetSelect = new HashSet();
      for (int i=1;i<=2;i++){
            Objet objet = new Objet();
             objet.setId(i);
            lObjetSelect.add(objet);
         }
      obj.setActif(true);               
      obj.setDateCreation(new Date());
      obj.setDateModification(new Date());
      obj.setUtilisateurCreer(1);
      obj.setUtilisateurModifier(1);
      obj.setObjets(lObjetSelect);
      dao.sauvegarderObjet(obj);
      
   }

}


Merci


Top
 Profile  
 
 Post subject:
PostPosted: Wed Sep 12, 2007 8:33 am 
Newbie

Joined: Sun Sep 09, 2007 11:52 am
Posts: 5
personne pour m'aider :-( ?


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 13, 2007 10:05 am 
Newbie

Joined: Sun Sep 09, 2007 11:52 am
Posts: 5
je pense avoir avancé mais toujours pas se que je veux !!!
Code:
...........
obj.setUtilisateurCreer(1);
      obj.setUtilisateurModifier(1);
      obj.setObjets(lObjetSelect);
      AcceesObjetProfil acc = new AcceesObjetProfil();
      acc.setSupprimer(false);
      acc.setDateCreation(new Date() );
      acc.setDateModification(new Date() );
      acc.setId(1);
      acc.setUtilisateurCreer(1);
      acc.setUtilisateurModifier(1);

      obj.getAcceesObjetProfil().add(acc);
      dao.sauvegarderObjet(obj);
   }

}

Mon main mais la jai une exception : au niveau d'obj.getAcceesObjetProfil().add(acc);

Quote:
Exception in thread "main" java.lang.NullPointerException
at com.gestionStock.testMain.ObjetMain.main(ObjetMain.java:49)


Top
 Profile  
 
 Post subject:
PostPosted: Fri Sep 14, 2007 9:01 am 
Newbie

Joined: Sun Sep 09, 2007 11:52 am
Posts: 5
:-) !!!
bon finalement j'ai crée des relations birectionnel many-to-one dans mon AcceesProfilObjet.hbm.xml .....
mais dommage j'aurai bien aimé le faire avec le composite-element ...
mais si vous avez des idees a mon probleme alors faite moi signe ;-)


Top
 Profile  
 
 Post subject: Souci avec mapping et classe d'association
PostPosted: Fri Sep 28, 2007 6:12 am 
Newbie

Joined: Fri Sep 28, 2007 5:51 am
Posts: 2
C'est une classe d'association qui possède des proriétés, voici le fichier mapping de cette classe

Code:
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
   <class name="SIA.AssocCritereAlternant, SIA" table="AssocCritereAlternant">
      <id name="id" column="idAssocCritereAlternant" type="integer" >
         <generator class="native" />
      </id>
      <property name="valeur" column= "valeur" type="String"/>

      

      <many-to-one name="critere" class="SIA.Critere,SIA" column="_idCritere" cascade="delete-orphan" />
      <!-- many-to-one nom de la collection que l'on stock, nom_classe du one, clé etrangère de la classe one  -->

      <many-to-one name="alternant" class="SIA.Alternant,SIA" column="_idPersonne" cascade="delete-orphan" />
      <!-- many-to-one nom de la collection que l'on stock, nom_classe du one, clé etrangère de la classe one  -->



   </class>
</hibernate-mapping>


Nous voulons supprimer l'objet de cette classe d'association

Code:
session.Delete(unObject);


mais on obtien l'erreur suivante :
Code:
deleted object would be re-saved by cascade (remove deleted object from associations): 17, of class: SIA.Alternant


donc on pense notre mapping est incorrect, il a l'air d'essayer de supprimer un objet d'un classe associée et non l'objet de l'assos

merci


Top
 Profile  
 
 Post subject:
PostPosted: Mon Oct 01, 2007 4:44 am 
Newbie

Joined: Sun Sep 09, 2007 11:52 am
Posts: 5
bonjour et désolé du retard
pour supprimer :
SIA.AssocCritereAlternant.getSIA.Critere,SIA().remove(unobjet);
il supprimera si l'objet n'a plus de père
A noter que moi j'utilise hibernate 3 !!!!


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 6 posts ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.