IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JSF Java Discussion :

Nested transaction not supported


Sujet :

JSF Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut Nested transaction not supported
    J'ai l'erreur suivante:nested transaction not suppored
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
     
    DAO:
    package project.metier.dao;
     
    import java.util.List;
     
    import org.hibernate.Criteria;
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.criterion.Expression;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Repository;
     
    import project.metier.mouse.TypeCarburant;
    import project.util.HibernateUtil;
     
     
    @Repository("iTypeCarburantHome")
    public class ITypeCarburantImpl implements ITypeCarburantHome {
    	/*
    	private SessionFactory sessionFactory;
     
        @Autowired
        public void setSessionFactory(SessionFactory factory){
            sessionFactory=factory;
        }*/
     
    	@Override
    	public void addTypeCarburant(TypeCarburant tc) {
     
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		session.save(tc);
    		session.getTransaction().commit();
     
     
    	}
     
    	@Override
    	public TypeCarburant getTypeCarburant(int idc) {
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Criteria crit=session.createCriteria(TypeCarburant.class);
    		crit.add(Expression.eq("TypeCarburant", idc));
    		Object o=crit.uniqueResult();
    		if(o==null)
    			throw new RuntimeException(" intruvable");
    		TypeCarburant t=(TypeCarburant) o;
    		return t;
    	}
     
    	@Override
    	public List<TypeCarburant> getAlltype() {
     
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.getTransaction().begin();
    		Query req=session.createQuery("select r from TypeCarburant r");
    		return (req.list());
     
     
    	}
     
    	@Override
    	public List<TypeCarburant> getTypeBy(String mc) {
    		Session
    		session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Query req=session.createQuery("select t from TypeCarburant t where t.libelle like :x");
    		req.setParameter("x","%"+mc+"%");
    		return req.list();
    	}
     
    	@Override
    	public List<TypeCarburant> getTypeByMC(String mc) {
    		Session
    		session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		Query req=session.createQuery("select t from TypeCarburant t where t.libelle like :x");
    		req.setParameter("x","%"+mc+"%");
    		return req.list();
    	}
     
    	@Override
    	public TypeCarburant getTypeById(int idc) {
    		Session
    		session=HibernateUtil.getSessionFactory().getCurrentSession();
    		session.beginTransaction();
    		TypeCarburant t1=(TypeCarburant) session.get(TypeCarburant.class, idc);
    		return t1;
    	}
     
    	@Override
    	public void deleteTypeCarburant(TypeCarburant typeCarburant) {
    		// TODO Auto-generated method stub
    		Session session = HibernateUtil.getSessionFactory().getCurrentSession();
    		Transaction transaction = session.beginTransaction();
    		try {
    			session.delete(typeCarburant);
    			transaction.commit();
    			session.clear();
    		} catch (Exception e) {
    			e.printStackTrace();
    			transaction.rollback();
    			// TODO: handle exception
    		}
    	}
    Bean
    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
    package project.beans;
     
     
    import java.util.List;
     
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
     
    import project.metier.mouse.TypeCarburant;
    import project.service.TypeCarburantService;
     
    @Component
    @Scope
    //@ManagedBean(name="carb")
    public class TypeCarburantBean {
    	private TypeCarburant typeCarburant;
    	private TypeCarburantService carburantService;
     
    	public TypeCarburantBean(){
    		typeCarburant=new TypeCarburant();
     
    	}
    	public  List<TypeCarburant> getAlltype(){
    		return carburantService.getAlltype();
    		}
     
    	public void addTypeCarburant(){
    		carburantService.addTypeCarburant(typeCarburant);
    	}
     
    	public TypeCarburant getTypeCarburant() {
    		return typeCarburant;
    	}
     
    	public void setTypeCarburant(TypeCarburant typeCarburant) {
    		this.typeCarburant = typeCarburant;
    	}
     
    	@Autowired
    	public void setCarburantService(TypeCarburantService carburantService) {
    		this.carburantService = carburantService;
    	}
     
     
     
     
    }
    le Formulaire
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/Views/Template/common.xhtml">
    <ui:define name="Edition">
    <h:form id="form">
    <p:growl id="msgs" />
    <p:panel header="Nouveau">
    <h:panelGrid columns="2" id="grid">
    <h:outputLabel value="ID : *" for="txt_id" />
    <p:inputText id="txt_id" value="#{typeCarburantBean.typeCarburant.idCarburant}"
    required="true" />
    <h:outputLabel value="Libelle : *" for="txt_lib" />
    <p:inputText id="txt_lib" value="#{typeCarburantBean.typeCarburant.libelle}"
    required="true" />

    <h:outputLabel value="prix : *" for="txt_prix" />
    <p:inputText id="txt_prix" required="true"
    value="#{typeCarburantBean.typeCarburant.prixLitre}" />

    <p:commandButton value="Reset" type="reset" />
    <p:commandButton id="btn_add" value="AJOUT"
    action="#{typeCarburantBean.addTypeCarburant}" />
    </h:panelGrid>
    </p:panel>
    </h:form>
    </ui:define>
    <ui:define name="Consultation">
    <h:form>
    <p:outputPanel>
    <h:outputText value="Search:" style="Height:30px"/>
    <p:inputText id="globalFilter" onkeyup="carsTable.filter()" style="width:150px" />
    </p:outputPanel>
    <p:dataTable id="dataTable" var="typeCarburant" value="#{typeCarburantBean.alltype}" sortMode="single" rows="5" paginator="true">

    <p:column sortBy="#{typeCarburant.idCarburant}" headerText="ID" >
    <h:outputText value="#{typeCarburant.idCarburant}" />
    </p:column>

    <p:column sortBy="#{typeCarburant.libelle}" headerText="Libelle">
    <h:outputText value="#{typeCarburant.libelle}" />
    </p:column>

    <p:column sortBy="#{typeCarburant.prixLitre}" headerText="prix par litre">
    <h:outputText value="#{typeCarburant.prixLitre}" />
    </p:column>

    </p:dataTable>

    </h:form>
    </ui:define>

    </ui:composition>
    </html>
    le code de l'erreur:
    09:57:07,942 WARNING [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost-127.0.0.1-8080-1) JSF1064 : Impossible de localiser ou de servir une ressource, global.css, depuis la bibliothèque css.
    09:57:08,027 INFO [org.hibernate.cfg.Configuration] (http-localhost-127.0.0.1-8080-1) HHH000043: Configuring from resource: /hibernate.cfg.xml
    09:57:08,030 INFO [org.hibernate.cfg.Configuration] (http-localhost-127.0.0.1-8080-1) HHH000040: Configuration resource: /hibernate.cfg.xml
    09:57:08,132 WARN [org.hibernate.internal.util.xml.DTDEntityResolver] (http-localhost-127.0.0.1-8080-1) HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
    09:57:08,189 INFO [org.hibernate.cfg.Configuration] (http-localhost-127.0.0.1-8080-1) HHH000041: Configured SessionFactory: null
    09:57:08,196 INFO [org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (http-localhost-127.0.0.1-8080-1) HHH000402: Using Hibernate built-in connection pool (not for production use!)
    09:57:08,200 INFO [org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (http-localhost-127.0.0.1-8080-1) HHH000115: Hibernate connection pool size: 20
    09:57:08,204 INFO [org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (http-localhost-127.0.0.1-8080-1) HHH000006: Autocommit mode: false
    09:57:08,209 INFO [org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (http-localhost-127.0.0.1-8080-1) HHH000401: using driver [com.microsoft.sqlserver.jdbc.SQLServerDriver] at URL [jdbc:sqlserver://SACKYHARREY-HP\MSSQLSERVER2;DatabaseName=park_auto;SelectMethod=cursor]
    09:57:08,215 INFO [org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl] (http-localhost-127.0.0.1-8080-1) HHH000046: Connection properties: {user=sacky, password=****}
    09:57:08,320 INFO [org.hibernate.dialect.Dialect] (http-localhost-127.0.0.1-8080-1) HHH000400: Using dialect: org.hibernate.dialect.SQLServerDialect
    09:57:08,836 INFO [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (http-localhost-127.0.0.1-8080-1) HHH000399: Using default transaction strategy (direct JDBC transactions)
    09:57:08,841 INFO [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (http-localhost-127.0.0.1-8080-1) HHH000397: Using ASTQueryTranslatorFactory
    09:57:10,035 INFO [stdout] (http-localhost-127.0.0.1-8080-1) Hibernate: select typecarbur0_.ID_CARBURANT as ID1_13_, typecarbur0_.LIBELLE as LIBELLE2_13_, typecarbur0_.PRIX_LITRE as PRIX3_13_ from park_auto.dbo.TYPE_CARBURANT typecarbur0_

    09:57:10,425 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost-127.0.0.1-8080-1) Error Rendering View[/Views/Carburant/FuelEdit.xhtml]: javax.el.ELException: /Views/Carburant/FuelEdit.xhtml @38,138 value="#{typeCarburantBean.alltype}": org.hibernate.TransactionException: nested transactions not supported
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIData.getValue(UIData.java:731) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at org.primefaces.component.datatable.DataTable.getValue(DataTable.java:867) [primefaces-3.5.jar:]
    at org.primefaces.component.api.UIData.getDataModel(UIData.java:579) [primefaces-3.5.jar:]
    at javax.faces.component.UIData.isRowAvailable(UIData.java:343) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at org.primefaces.component.api.UIData.setRowModel(UIData.java:422) [primefaces-3.5.jar:]
    at org.primefaces.component.api.UIData.setRowIndex(UIData.java:401) [primefaces-3.5.jar:]
    at org.primefaces.component.datatable.DataTableRenderer.encodeTbody(DataTableRenderer.java:683) [primefaces-3.5.jar:]
    at org.primefaces.component.datatable.DataTableRenderer.encodeRegularTable(DataTableRenderer.java:234) [primefaces-3.5.jar:]
    at org.primefaces.component.datatable.DataTableRenderer.encodeMarkup(DataTableRenderer.java:196) [primefaces-3.5.jar:]
    at org.primefaces.component.datatable.DataTableRenderer.encodeEnd(DataTableRenderer.java:82) [primefaces-3.5.jar:]
    at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59) [primefaces-3.5.jar:]
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47) [primefaces-3.5.jar:]
    at org.primefaces.extensions.component.layout.LayoutPaneRenderer.encodeBegin(LayoutPaneRenderer.java:148) [primefaces-extensions-0.7.1.jar:0.7.1]
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:56) [primefaces-3.5.jar:]
    at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47) [primefaces-3.5.jar:]
    at org.primefaces.extensions.component.layout.LayoutPaneRenderer.encodeBegin(LayoutPaneRenderer.java:152) [primefaces-extensions-0.7.1.jar:0.7.1]
    at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:820) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1755) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_21]
    Caused by: org.hibernate.TransactionException: nested transactions not supported
    at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.begin(AbstractTransactionImpl.java:152) [hibernate-core-4.2.2.Final.jar:4.2.2.Final]
    at project.metier.dao.ITypeCarburantImpl.getAlltype(ITypeCarburantImpl.java:56) [classes:]
    at project.service.TypeCarburantServiceImpl.getAlltype(TypeCarburantServiceImpl.java:39) [classes:]
    at project.beans.TypeCarburantBean.getAlltype(TypeCarburantBean.java:25) [classes:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_21]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_21]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_21]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_21]
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:302) [jboss-el-api_2.2_spec-1.0.0.Final.jar:1.0.0.Final]
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169) [jbossweb-7.0.10.Final.jar:]
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) [jbossweb-7.0.10.Final.jar:]
    at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    ... 49 more


    [/quote]
    est que quelqu'un a une idée de ce que c'est??

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Tu ouvre des transactions, mais tu oublie presque systématiquement de les fermer (commit ou rollback), du coup quand, pour la deuxième fois, tu demande une transaction, jdbs tente d'ouvrir une sous transaction (nested transaction). La plupart des SGBD ne supportent pas cette fonctionnalité.


    -> Gère correctement tes transactions. A chaque begin son commit / rollback, de préférence dans un finally pour être sûr qu'il est exécuté.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut j'ai essayé ça
    Citation Envoyé par tchize_ Voir le message
    Tu ouvre des transactions, mais tu oublie presque systématiquement de les fermer (commit ou rollback), du coup quand, pour la deuxième fois, tu demande une transaction, jdbs tente d'ouvrir une sous transaction (nested transaction). La plupart des SGBD ne supportent pas cette fonctionnalité.


    -> Gère correctement tes transactions. A chaque begin son commit / rollback, de préférence dans un finally pour être sûr qu'il est exécuté.
    je peine à trouver une solution,j'utilise sql server 2008,j'ai essaye la methode suivante:
    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
    public List<TypeCarburant> getAlltype() {
    		Session session=HibernateUtil.getSessionFactory().getCurrentSession();
    		//Transaction transaction = session.beginTransaction();
     
    		try{
            session.getTransaction().begin();
    		Query req=session.createQuery("select r from TypeCarburant r");
    		return (req.list());
     
     
    		} catch (RuntimeException e) {
    		    session.getTransaction().rollback();
    		    throw e;
    		}
     
    	}
    et ça ne marche toujours pas.Est ce que quelqu'un a une autre proposition

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    La tu ne ferme ta transaction que si il y a une erreur. Tu dois systématiquement fermer ta transaction. Ou alors modifier ton code pour avoir un transaction globale.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2011
    Messages : 40
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    La tu ne ferme ta transaction que si il y a une erreur. Tu dois systématiquement fermer ta transaction. Ou alors modifier ton code pour avoir un transaction globale.
    si je fais un commit juste après return dans le try,j'obtiens Unreacheble code et si je le met avant return,il ya erreur à l'execution avec message:session is closed alors la je suis un peu perdu.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    t'as deux possibilité:

    soit tu fais une session & un transaction dans chaque méthode -> Tu ne pourra pas faire de lazyloading après l'appel de la méthode. (d'où ton session closed)

    Soit tu fais ce qui est recommandé en général: une seule session qui court pendant toute la requête http de l'utilisateur-> il faut regarder du coté des pattern recommandés dans la doc hibernate, c'est expliqué en long et en large.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème: nested transactions not supported
    Par Racha07 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 28/05/2015, 11h25
  2. decoding Unicode is not supported
    Par naiadeKaren dans le forum Général Python
    Réponses: 6
    Dernier message: 20/07/2011, 06h47
  3. Réponses: 7
    Dernier message: 22/02/2007, 11h29
  4. socket: Address family not supported by protocol ??
    Par innosang dans le forum Réseau
    Réponses: 5
    Dernier message: 21/12/2005, 11h32
  5. Fatal Error : OpenGL GLX extension not support
    Par kacedda dans le forum GLUT
    Réponses: 5
    Dernier message: 06/06/2005, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo