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

Hibernate Java Discussion :

Problème Hibernate erreur


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut Problème Hibernate erreur
    salut tt le monde ,j'ai un probleme lors de la suppression d'un objet j'ai pa pu le résoudre (mm j'ai essaye de supprimer les fils de cet objet lors de sa suppression SVP aidez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	private Set<DrivingLicense> drivingLicenses = new HashSet<DrivingLicense>(0);
    	private Set<EmployeeJob> employeeJobs = new HashSet<EmployeeJob>(0);
    	private Set<EmployeeChildren> employeeChildrens = new HashSet<EmployeeChildren>(
    			0);
    	private Set<EmergencyContacts> emergencyContactses = new HashSet<EmergencyContacts>(
    			0);
    	private Set<Contacts> contactses = new HashSet<Contacts>(0);
    	private Set<EmployeeLanguages> employeeLanguageses = new HashSet<EmployeeLanguages>(
    			0);
    les set et get
    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
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "employee", cascade = CascadeType.ALL)
    	public Set<DrivingLicense> getDrivingLicenses() {
    		return this.drivingLicenses;
    	}
     
    	public void setDrivingLicenses(Set<DrivingLicense> drivingLicenses) {
    		this.drivingLicenses = drivingLicenses;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "employee", cascade = CascadeType.ALL)
    	public Set<EmployeeJob> getEmployeeJobs() {
    		return this.employeeJobs;
    	}
     
    	public void setEmployeeJobs(Set<EmployeeJob> employeeJobs) {
    		this.employeeJobs = employeeJobs;
    	}
     
    	@OneToMany(fetch = FetchType.EAGER, mappedBy = "employee", cascade = CascadeType.ALL)
    	public Set<EmployeeChildren> getEmployeeChildrens() {
    		return this.employeeChildrens;
    	}
     
    	public void setEmployeeChildrens(Set<EmployeeChildren> employeeChildrens) {
    		this.employeeChildrens = employeeChildrens;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "employee", cascade = CascadeType.ALL)
    	public Set<EmergencyContacts> getEmergencyContactses() {
    		return this.emergencyContactses;
    	}
     
    	public void setEmergencyContactses(
    			Set<EmergencyContacts> emergencyContactses) {
    		this.emergencyContactses = emergencyContactses;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "employee", cascade = CascadeType.ALL)
    	public Set<Contacts> getContactses() {
    		return this.contactses;
    	}
     
    	public void setContactses(Set<Contacts> contactses) {
    		this.contactses = contactses;
    	}
     
    	@OneToMany(fetch = FetchType.LAZY, mappedBy = "employee",cascade=CascadeType.ALL)
    	public Set<EmployeeLanguages> getEmployeeLanguageses() {
    		return this.employeeLanguageses;
    	}
     
    	public void setEmployeeLanguageses(
    			Set<EmployeeLanguages> employeeLanguageses) {
    		this.employeeLanguageses = employeeLanguageses;
    	}

    la methode delete :

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void delete(Employee employee) {
    entityManager.remove(entityManager.find(Employee.class,
    employee.getId()));

    }

    erreur :
    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
     
     
    WARNING: #{employeeMB.delete}: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]; nested exception is javax.persistence.EntityNotFoundException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]
    javax.faces.FacesException: #{employeeMB.delete}: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]; nested exception is javax.persistence.EntityNotFoundException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
    	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
    	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
    	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
    	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:306)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:312)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
    	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:125)
    	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:324)
    	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:174)
    	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
    	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:113)
    	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:244)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:108)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:558)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:379)
    	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:243)
    	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:259)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:281)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    	at java.lang.Thread.run(Thread.java:662)
    Caused by: javax.faces.el.EvaluationException: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]; nested exception is javax.persistence.EntityNotFoundException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
    	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
    	... 60 more
    Caused by: org.springframework.orm.jpa.JpaObjectRetrievalFailureException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]; nested exception is javax.persistence.EntityNotFoundException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]
    	at org.springframework.orm.jpa.EntityManagerFactoryUtils.convertJpaAccessExceptionIfPossible(EntityManagerFactoryUtils.java:291)
    	at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:104)
    	at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:471)
    	at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:754)
    	at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:723)
    	at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:393)
    	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:120)
    	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    	at $Proxy45.deleteById(Unknown Source)
    	at com.icontech.apps.iconapplications.web.EmployeeMB.delete(EmployeeMB.java:916)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    	at java.lang.reflect.Method.invoke(Method.java:597)
    	at org.apache.el.parser.AstValue.invoke(AstValue.java:262)
    	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
    	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
    	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
    	... 61 more
    Caused by: javax.persistence.EntityNotFoundException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]
    	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1217)
    	at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1168)
    	at org.hibernate.ejb.TransactionImpl.commit(TransactionImpl.java:81)
    	at org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:467)
    	... 77 more

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2004
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 184
    Par défaut
    Si ça peut t'aider, j'ai l'impression que tu essaye de supprimer un élément NULL.

    EntityNotFoundException: deleted entity passed to persist: [com.icontech.apps.iconapplications.model.Employee#<null>]

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    merci Mathieu .non j'ai verfié qu'il n'est pas null, moi je soupçonner qu'il ya un problem avec ces fils et pourtant j'ai bien spécifié que la suppression et en cascad (cascade = CascadeType.ALL) !!!!!??.j'ai esayé aussi de supprimer ces fils avant de le supprimer mais toujours la méme erreur.je comprend pas la cause de cette erreur??? et merci

  4. #4
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    Bonjour,

    essaie de remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cascade = CascadeType.ALL
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (cascade = {CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH})
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 6
    Par défaut
    salut slim et merci, j'ai deja essayé avec (cascade = {CascadeType.MERGE, CascadeType.REMOVE, CascadeType.REFRESH}) mais rien je pense qu'il faut détacher l'objet de ses fils alors j'ai essayé avec entityManager.detach(employee); mais rien du nouveau toujours la même erreur se produise ????????????????

  6. #6
    Membre émérite Avatar de slim
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2002
    Messages
    938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Décembre 2002
    Messages : 938
    Par défaut
    mmm
    Je soupçonne les EAGER d'être à l'origine de ton problème. D'ailleurs ils sont déconseillés. Essaies de les remplacer par LAZY, et si tu en as besoin lors du chargement de tes objets, mets un fetch dans ta requête.
    Faites une recherche sur le forum et/ou sur internet et lisez la doc officielle avant de poser une question svp.
    et n'oubliez pas de lire les FAQ !
    FAQ Java et les cours et tutoriels Java
    Doc JAVA officielle
    AngularJS 1.x
    Angular 2

    Do it simple... and RTFM !

  7. #7
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par tarekmdz Voir le message

    la methode delete :

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public void delete(Employee employee) {
    entityManager.remove(entityManager.find(Employee.class,
    employee.getId()));

    }
    C'est quand même fort ça, tu effectues un findById d'une entité en OneToMany (fetch EAGER) juste pour après dans la ligne qui suit supprimer, chapeau pour les perfs , est ce que t'as idée de combien d'enregistrements tu peux potentiellement tirer de la base d'un seul coup? C'est clairement ce type d'operation qui nous apporte sur la loudeur d'hibernate. Bon on va revenir à ton pb
    Voila la solution que je te propose :
    -Définir le cascade delete au niveau physique même (en base je veux dire) dans la contrainte reliant tes 2 tables
    -Coté Java effectuer une simple HQL qui aura pour role de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    delete entite ent where ent.id = :tonIdASupprimer

Discussions similaires

  1. [Hibernate] erreur database product name cannot be null
    Par enimiste dans le forum Hibernate
    Réponses: 4
    Dernier message: 24/04/2007, 19h07
  2. Eclipse-Hibernate-erreur Execution
    Par Invité dans le forum Hibernate
    Réponses: 18
    Dernier message: 22/06/2006, 09h37
  3. [Hibernate] Erreur de lecture
    Par magnus2005 dans le forum Hibernate
    Réponses: 2
    Dernier message: 05/05/2006, 23h51
  4. [Hibernate] Erreur de lecture
    Par magnus2005 dans le forum Hibernate
    Réponses: 2
    Dernier message: 24/01/2006, 16h47
  5. [Hibernate] : Erreur Could not find datasource
    Par tipaquo dans le forum Hibernate
    Réponses: 2
    Dernier message: 12/10/2005, 10h43

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