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

JPA Java Discussion :

[@EmbeddedId] ava.lang.IllegalArgumentException: Removing a detached instance


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Par défaut [@EmbeddedId] ava.lang.IllegalArgumentException: Removing a detached instance
    Bonjour,

    Je développe une application (JSF + EJB3) en partant d'une base de données avec des clés composées. Je rencontre un problème sur la suppression d'enregistrement.
    Voici ma classe Entité.
    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
     
    @Entity
    @Table(name="P_COMMUNE")
    public class PCommune implements Serializable {
     
    	private PCommunePK pk;
    	private String p_ci_lib;
    	private String p_ci_cp;
     
    	public String getP_ci_lib() {
    		return p_ci_lib;
    	}
    	public void setP_ci_lib(String p_ci_lib) {
    		this.p_ci_lib = p_ci_lib;
    	}
    	public String getP_ci_cp() {
    		return p_ci_cp;
    	}
    	public void setP_ci_cp(String p_ci_cp) {
    		this.p_ci_cp = p_ci_cp;
    	}
     
    	@EmbeddedId
    	public PCommunePK getPk() {
    		return pk;
    	}
    	public void setPk(PCommunePK pk) {
    		this.pk = pk;
    	}
    Voici ma classe pour la clé composée
    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
     
    @Embeddable
    public class PCommunePK implements Serializable {
     
    	@Column(name="P_CI_DEP")
    	private String p_ci_dep;
     
    	@Column(name="P_CI_COM")
    	private String p_ci_com;
     
    	public String getP_ci_dep() {
    		return p_ci_dep;
    	}
     
    	public void setP_ci_dep(String p_ci_dep) {
    		this.p_ci_dep = p_ci_dep;
    	}
     
    	public String getP_ci_com() {
    		return p_ci_com;
    	}
     
    	public void setP_ci_com(String p_ci_com) {
    		this.p_ci_com = p_ci_com;
    	}
     
    	public int hashCode()
    	   {
    		int hash = 0;
    		hash += (this.p_ci_dep != null ? this.p_ci_dep.hashCode() : 0);
    		hash += (this.p_ci_com != null ? this.p_ci_com.hashCode() : 0);
    		return hash;	   }
     
    	   public boolean equals(Object obj)
    	   {
    	      if (obj == this) return true;
    	      if (!(obj instanceof RVoiePK)) return false;
    	      if (obj == null) return false;
    	      PCommunePK pk = (PCommunePK) obj;
    	      return pk.p_ci_com.equals(p_ci_com) && pk.p_ci_dep.equals(p_ci_dep);
    	   }
    Les opérations suivantes fonctionnent correctement : persist, merge, find.
    Par contre pour le delete, j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    java.lang.IllegalArgumentException: Removing a detached instance fr.dsit.entite.PCommune#fr.dsit.entite.PCommunePK@dc71
    J'ai fait le test de charger une commune, d'afficher son attribut p_ci_lib, de faire un update, et enfin un delete. Mais même erreur.

    Dites-moi, que le delete fonctionne correctement avec une clé composé, et que j'ai fait une erreur

  2. #2
    Membre averti

    Profil pro
    Inscrit en
    Août 2005
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 39
    Par défaut
    Il faut le remove et le merge en un seul bloc et non en deux commandes
    em.remove(em.merge(commune));

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

Discussions similaires

  1. Removing a detached instance ?
    Par eric95 dans le forum Hibernate
    Réponses: 13
    Dernier message: 22/11/2012, 15h42
  2. Réponses: 0
    Dernier message: 02/06/2009, 23h54
  3. Removing a detached instance
    Par Chatastroff dans le forum JPA
    Réponses: 3
    Dernier message: 17/12/2008, 10h22
  4. Réponses: 9
    Dernier message: 03/06/2007, 21h40

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