save hibernate

save hibernate - Java - Programmation

Marsh Posté le 09-10-2007 à 11:19:23    

bonjour je n'arrive pas à enregistrer mon object, j'ai pas d'erreur, je maitrise pas le mapping hibernate je pense que ça vient de là, adresMer n'est pas vide, les autres fonctions d'enregistrement et de session fonctionne pour les autres objets
 
Voici mon code
 
Session session = HibernateUtil.currentSession();
HibernateUtil.demarreSession().beginTransaction();
 
                          Adresse adresEnf = new Adresse();
  adresEnf.setMalade(enfmal);
  adresEnf.setAd_pycode(adresMer.getAd_pycode());
  adresEnf.setAd_nom(adresMer.getAd_nom());
  adresEnf.setAd_prenom(adresMer.getAd_prenom());
  adresEnf.setAd_cpt(adresMer.getAd_cpt());
  adresEnf.setAd_typ(adresMer.getAd_typ());      
  adresEnf.setAd_lib1(adresMer.getAd_lib1());
  adresEnf.setAd_lib2(adresMer.getAd_lib2());
  adresEnf.setAd_lib3(adresMer.getAd_lib3());
  adresEnf.setAd_titcode(adresMer.getAd_titcode());
  adresEnf.setVille(adresMer.getVille());
  adresEnf.setAd_pacode(adresMer.getAd_pacode());
  adresEnf.setAd_tel1(adresMer.getAd_tel1());
  adresEnf.setAd_tel2(adresMer.getAd_tel1());
  adresEnf.setAd_tel3(adresMer.getAd_tel1());
  adresEnf.setAd_hdeb(adresMer.getAd_hdeb());
  adresEnf.setAd_dfin(adresMer.getAd_dfin());
  adresEnf.setAd_cptprec(adresMer.getAd_cptprec());
  adresEnf.setAd_cacode(adresMer.getAd_cacode());
  adresEnf.setAd_datmaj(adresMer.getAd_datmaj());
  adresEnf.setAd_utilmaj(adresMer.getAd_utilmaj());
 
  try {
   Session session = HibernateUtil.getUpdateSession();
               session.saveOrUpdate(adresEnf);
  }
  catch (Exception e) {
   TransactionUtil.rollback();
   Log.getLog(this).error("AdresseSql" );
   throw e;
  }
 
                         finally {
                          Session session = HibernateUtil.currentSession();
   
  // si la session existe et est bien ouverte
  if(session != null && session.isOpen())
  {
   try
   {
    // si la transaction est encore valide, on la commit
    if(session.getTransaction() != null && session.getTransaction().isActive())
     session.getTransaction().commit();
   }
   finally
   {
    // on ferme la session
    HibernateUtil.closeSession();
   }
  }
                          }
 
et voici  mon mapping
 
<?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="fr.cerner.modele">
 
 <class name="Adresse" table="ADRESSE">
   
  <composite-id>
   <key-many-to-one name="malade" column="AD_MANUMDOS"/>
   <key-property name="ad_cpt" column="AD_CPT"/>
  </composite-id>
 
  <property name="ad_typ" column="AD_TYP" type="fr.cerner.sql.type.Char"/>
  <property name="ad_lib1" column="AD_LIB1"/>
  <property name="ad_lib2" column="AD_LIB2"/>
  <property name="ad_lib3" column="AD_LIB3"/>
  <many-to-one name="ad_titcode" column="AD_TITCODE"/>
  <many-to-one name="ville" class="fr.cerner.modele.Ville" lazy="false">
   <column name="AD_VNCODE"/>
   <column name="AD_VNCODEDIST"/>
  </many-to-one>
   
  <property name="ad_pacode" column="AD_PACODE" type="fr.cerner.sql.type.Char"/>
  <property name="ad_pytype" column="AD_PYTYPE" type="fr.cerner.sql.type.Char"/>
  <property name="ad_pycode" column="AD_PYCODE" type="fr.cerner.sql.type.Char"/>
  <property name="ad_tel1" column="AD_TEL1" type="fr.cerner.sql.type.Char"/>
  <property name="ad_tel2" column="AD_TEL2" type="fr.cerner.sql.type.Char"/>
  <property name="ad_tel3" column="AD_TEL3" type="fr.cerner.sql.type.Char"/>
  <property name="ad_hdeb" column="AD_HDEB" type="fr.cerner.sql.type.DateAxya"/>
  <property name="ad_dfin" column="AD_DFIN" type="fr.cerner.sql.type.DateAxya"/>
  <property name="ad_cptprec" column="AD_CPTPREC"/>
  <many-to-one name="ad_cacode" column="AD_CACODE"/>
  <property name="ad_datmaj" column="AD_DATMAJ"/>
  <many-to-one name="ad_utilmaj" column="AD_UTILMAJ"/>
  <property name="ad_nom" column="AD_NOM"/>
  <property name="ad_prenom" column="AD_PRENOM"/>
 
 </class>
 
</hibernate-mapping>
 
 Merci

Reply

Marsh Posté le 09-10-2007 à 11:19:23   

Reply

Marsh Posté le 09-10-2007 à 11:57:31    

en debugant j'ai vu ceci
failed to lazily initialize a collection of role: fr.cerner.modele.Malade.adresses, no session or session was closed pour la ligne Adresse adresEnf = new Adresse();

Reply

Marsh Posté le 12-10-2007 à 12:55:27    

j'ai resolu le probleme rien à voir avec "failed to lazily initialize a collection of role"  
C'était au niveau de la base, une erreur de données, un trigger se déclenche après le commit de hibernate et celui ci était faux si une table n'était par rempli.
Je voyais bien mon insert dans la console mais aucune erreur
voila

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed