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.  [ 15 posts ] 
Author Message
 Post subject: pb avec les transactions
PostPosted: Thu May 18, 2006 2:27 am 
Newbie

Joined: Thu May 18, 2006 2:18 am
Posts: 2
Bonjour, voila nous avons un projet à réaliser et nous devons utiliser hibernate...
Nous avons assimilé pas mal de choses à son sujet grâce aux livres ou aux sites internets dédiés mais il nous reste encore quelques problèmes et le temps nous manque.
Notre principal problème dont nous voudrions nous débarasser rapidement concerne les transactions....Voila parfois qd nous effectuons un transaction.commit(), on obtient une exception : transaction not successfully started..Alors qu'une transaction a bien été démarrée et que tt cela se passe pendant une session ..
Si quelqu'un connait ce type d'erreur, pourrait il nous aider...
Si besoin nous pouvons dèvelopper avec plus de détails , par exemple des morceaux de codes...
En vous remerciant.

_________________
Les bibis


Top
 Profile  
 
 Post subject:
PostPosted: Wed May 31, 2006 8:29 am 
Beginner
Beginner

Joined: Tue May 09, 2006 2:30 am
Posts: 22
Si tu as toujours ce probleme, plus de details seraient en effet les bienvenus :

- Code (le plus court possible) reproduisant le probleme
- configuration d'hibernate
- Environement (es-tu dans un container EJB ? Une application "normale" ? ...)

_________________
--
Celine


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 01, 2006 2:18 am 
Newbie

Joined: Thu May 18, 2006 2:18 am
Posts: 2
Merci pour ta réponse mais nous n'avons plus ce problème.
Tchao

_________________
Les bibis


Top
 Profile  
 
 Post subject:
PostPosted: Wed Jun 21, 2006 11:26 am 
Newbie

Joined: Wed Jun 21, 2006 11:13 am
Posts: 6
est-ce que quelqu'un peut poster le résultat, moi j'ai le même pb. il y a 2 jours :(


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 1:31 am 
Beginner
Beginner

Joined: Tue May 09, 2006 2:30 am
Posts: 22
Meme remarque, plus d'info sur ton probleme aideraient a le resoudre... (code, stacktrace, environnement)

_________________
--
Celine


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 2:56 am 
Newbie

Joined: Wed Jun 21, 2006 11:13 am
Posts: 6
Merci :)

alors j'utilise

Eclipse Version: 3.1.2
MySQL 5.0.21
Hibernate Synchronizer 3.1.9
Tomcat 5.0.28

voilà le code :


public void AjouterFournisseur(Fournisseur fournisseur) throws Exception {

org.hibernate.Transaction transaction = null;

Session session = HibernateUtil.currentSession();

try
{
transaction = session.beginTransaction();
session.save(fournisseur);
}
catch (Exception ex)
{
// en cas d'erreur annuler les modifications

transaction.rollback();
throw ex;
}
finally
{
transaction.commit();
HibernateUtil.closeSession();
}
}

et l'exception :

javax.servlet.ServletException: Transaction not successfully started
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
cause mère
org.hibernate.TransactionException: Transaction not successfully started
org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:100)
com.GestionFournisseur.hibernate.DAO.CommentaireDAO.AjouterCommentaire(CommentaireDAO.java:36)
com.GestionFournisseur.hibernate.Manager.CommentaireManager.AjouterCommentaire(CommentaireManager.java:14)
com.GestionFournisseur.struts.Action.SolisNouveauFournisseurAction.execute(SolisNouveauFournisseurAction.java:51)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/5.0.28.



J'arrive de faire 'save' dans le même projet pour les tables plus complexes, où il y a les 'ForeignKays' .

Merci d'avance !


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 3:26 am 
Beginner
Beginner

Joined: Tue May 09, 2006 2:30 am
Posts: 22
1ere remarque : le commit ne devrait surtout pas etre dans le finally mais plutot comme ca :

Code:
try
{
  transaction = session.beginTransaction();
  session.save(fournisseur);
  transaction.commit();
}
catch (Exception ex)
{
  // en cas d'erreur annuler les modifications
  transaction.rollback();
  throw ex;
}
finally
{
  HibernateUtil.closeSession();
}


Sinon si une exception est lancee tu vas rollback, puis commit la transaction. Ce qui pourrait creer le genre d'erreur que tu me decris.

_________________
--
Celine


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 3:55 am 
Newbie

Joined: Wed Jun 21, 2006 11:13 am
Posts: 6
Ok .

J'ai déjà essayé, mais ça change rien :((.

peut être le pb. est dans le fic. de mapping ?

<?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="com.GestionFournisseur.hibernate.DATAMODEL">
<class
name="Fournisseur"
table="fournisseur"
>
<meta attribute="sync-DAO">false</meta>
<id
name="Id"
type="integer"
column="IdFournisseur"
>
<generator class="increment"/>
</id>

<property
name="Civilite"
column="Civilite"
type="string"
not-null="false"
length="45"
/>
<property
name="Nom"
column="Nom"
type="string"
not-null="false"
length="45"
/>
<property
name="Adresse1"
column="Adresse1"
type="string"
not-null="false"
length="150"
/>
<property
name="Adresse2"
column="Adresse2"
type="string"
not-null="false"
length="150"
/>
<property
name="CodePostal"
column="CodePostal"
type="string"
not-null="false"
length="10"
/>
<property
name="Ville"
column="Ville"
type="string"
not-null="false"
length="45"
/>
<property
name="Pays"
column="Pays"
type="string"
not-null="false"
length="45"
/>
<property
name="Telephone"
column="Telephone"
type="string"
not-null="false"
length="45"
/>
<property
name="Telecopie"
column="Telecopie"
type="string"
not-null="false"
length="45"
/>
<property
name="Fax"
column="Fax"
type="string"
not-null="false"
length="45"
/>
<property
name="Mail"
column="Mail"
type="string"
not-null="false"
length="45"
/>
<property
name="Dirigeant"
column="Dirigeant"
type="string"
not-null="false"
length="45"
/>
<property
name="Rcs"
column="Rcs"
type="string"
not-null="false"
length="45"
/>
<property
name="Siret"
column="Siret"
type="string"
not-null="false"
length="45"
/>
<property
name="Capital"
column="Capital"
type="string"
not-null="false"
length="45"
/>



<!--******************** MAPPING POUR LA TABLE CONTACT ************* -->

<set name="Contacts" lazy="true">
<key column="FkIdFournisseur"/>
<one-to-many class="Contact"/>
</set>

<!-- *********** MAPPING POUR ASSOCIATION FOURNISSEUR UTILISATEUR ********** -->

<set name="Utilisateurs" table="utilisateur_fournisseur" lazy="true">
<key column="FkIdFournisseur"/>
<many-to-many column="FkIdUtilisateur" class="Utilisateur"/>
</set>

<!-- *********** MAPPING POUR ASSOCIATION FOURNISSEUR CRITERE ********** -->

<set name="Criteres" table="fournisseur_critere" lazy="true">
<key column="FkIdFournisseur"/>
<many-to-many column="FkIdCritere" class="Critere"/>
</set>

<!-- *********** MAPPING POUR LA TABLE REMISE ************* -->

<set name="Remises" lazy="true">
<key column="FkIdFournisseur"/>
<one-to-many class="Remise"/>
</set>

<!-- *********** MAPPING POUR LA TABLE OPTION ************* -->

<set name="Options" lazy="true">
<key column="FkIdFournisseur"/>
<one-to-many class="Option"/>
</set>

<!-- *********** MAPPING POUR LA TABLE PRODUITS ************* -->

<set name="Produits" lazy="true" >
<key column="FkIdFournisseur"/>
<one-to-many class="Produit"/>
</set>

<!-- *********** MAPPING POUR LA TABLE FOURNISSEUR COMBINAISON ************* -->

<set name="FournisseurCombinaisons" lazy="true" >
<key column="FkIdFournisseur"/>
<one-to-many class="FournisseurCombinaison"/>
</set>

<!-- *********** MAPPING POUR LA TABLE FOURNISSEUR FAMILLE OPTION ************* -->

<set name="FournisseurFamilleOptions" lazy="true" >
<key column="FkIdFournisseur"/>
<one-to-many class="FournisseurCombinaison"/>
</set>


</class>
</hibernate-mapping>


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 3:57 am 
Newbie

Joined: Wed Jun 21, 2006 11:13 am
Posts: 6
je reçois err.

javax.servlet.ServletException: java.util.ArrayList
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:535)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:433)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
cause mère
java.lang.ClassCastException: java.util.ArrayList
org.hibernate.type.SetType.wrap(SetType.java:39)
org.hibernate.event.def.WrapVisitor.processArrayOrNewCollection(WrapVisitor.java:84)
org.hibernate.event.def.WrapVisitor.processCollection(WrapVisitor.java:51)
org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101)
org.hibernate.event.def.WrapVisitor.processValue(WrapVisitor.java:98)
org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55)
org.hibernate.event.def.AbstractSaveEventListener.visitCollectionsBeforeSave(AbstractSaveEventListener.java:333)
org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:250)
org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:167)
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:114)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:530)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:518)
org.hibernate.impl.SessionImpl.save(SessionImpl.java:514)
com.GestionFournisseur.hibernate.DAO.FournisseurDAO.AjouterFournisseur(FournisseurDAO.java:146)
com.GestionFournisseur.hibernate.Manager.FournisseurManager.AjouterFournisseur(FournisseurManager.java:61)
com.GestionFournisseur.struts.Action.SolisNouveauFournisseurAction.execute(SolisNouveauFournisseurAction.java:53)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 4:34 am 
Beginner
Beginner

Joined: Tue May 09, 2006 2:30 am
Posts: 22
Arrete moi si je me trompe :
Si le commit est dans le finally tu as cette exception "
javax.servlet.ServletException: Transaction not successfully started "
Si il est a la fin du try (la ou il devrait etre...) tu as "java.lang.ClassCastException: java.util.ArrayList "

Si c'est le cas ton probleme n'est pas lie aux transactions !!

la premiere excption que tu as decrite est due au fait qu'un exception est lancee dans ton try et que donc tu rollback et commit successivement ta transaction.
Il faut donc absolument que ton commit soit dans le try et non dans le finally.

Ton vrai probleme est donc cette ClassCastException. C'est la dessus qu'il faut creuser

_________________
--
Celine


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 4:38 am 
Newbie

Joined: Wed Jun 21, 2006 11:13 am
Posts: 6
T'a raison :))

ça marche pour transaction après tes remarques et pour l'autre exception aussi j'ai trouvé le pb.:))).

merci beaucoup :))


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 4:39 am 
Beginner
Beginner

Joined: Tue May 09, 2006 2:30 am
Posts: 22
Verifie que ton objet fournisseur est construit correctement. Apparement, l'exception est lancee quand il fait des verifications sur les collections. Regarde donc du cote des relations (tous les sets que tu definie a la fin de ton fichier de mapping).
Verifient qu'il n'y ai pas n'importe quoi dedans.

Si tu vois pas essaye de les virer (temporairement) pour voir si l'exception est toujours la.

_________________
--
Celine


Top
 Profile  
 
 Post subject:
PostPosted: Thu Jun 22, 2006 4:44 am 
Beginner
Beginner

Joined: Tue May 09, 2006 2:30 am
Posts: 22
berogia wrote:
T'a raison :))

ça marche pour transaction après tes remarques et pour l'autre exception aussi j'ai trouvé le pb.:))).

merci beaucoup :))


Je t'en prie !

(si ca t'as vraiment aide, des credits ne me feraient pas de mal si tu 'votes' pour un de mes posts ;) )

Bon courrage pour la suite en tout cas !!

_________________
--
Celine


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 23, 2006 3:37 am 
Newbie

Joined: Wed Jun 21, 2006 11:13 am
Posts: 6
comment je dois voter ? :)))


Top
 Profile  
 
 Post subject:
PostPosted: Fri Jun 23, 2006 3:48 am 
Beginner
Beginner

Joined: Tue May 09, 2006 2:30 am
Posts: 22
Hmm, en fait c'est vrai tu ne peux pas car ce n'est pas toi qui a cree ce topic ! Desolee, j'avais zappe ;)

Sinon normalement ca se passe comme ca :

Derniere ligne des posts : "Please rate this answer to give credits to the poster! Did it solve the problem? Yes / No"

Les credit servent a poster dans le forum 'Hibernate Users' (qui est l'endroit ou tu as le plus de chance d'avoir une reponse a des questions compliquees ;) )

Pour en savoir plus : http://forum.hibernate.org/credits.html (en anglais)

a+

_________________
--
Celine


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 15 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.