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

Java EE Discussion :

Problème de suppression d'une entité avec une clé composite [EJB3.1]


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut Problème de suppression d'une entité avec une clé composite
    Bonjour!
    J'ai une application dans laquelle j'ai des relations entre autres des relations 1-n.J'effectue normalement la suppression de ces entités mais lorsque je veux supprimer une classe association decoulant d'une relation n-aire,la suppression passe bref pas d'erreur même lors des tests mais je retrouve toujours l'enregistrement au niveau de la bd.voici un exemple de code pour illustrer ce que je dis.
    l'entité role
    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
     
    @Entity
    @Table(name = "role")
    public class Role implements DAOEntry {
           @Id 
        @GeneratedValue(strategy= GenerationType.AUTO)
        @Column(name = "Id")
        private Long id;
     
        @Size(min = 1, max = 254)
        @Column(name = "code",nullable=false,unique=true)
        private String code;
     
        //relation avec la table User
        @OneToMany(mappedBy = "roleid")
        private Collection<User> userCollection;
     
         //relation avec la table Role
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "role")
        private Collection<Rolemenu> rolemenuCollection;
        public Role() {
        }
    //getter/setters
     
    }
    l'entite menu

    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
    /
    @Entity
    @Table(name = "menu")
    public class Menu implements DAOEntry {
          @Id @GeneratedValue(strategy= GenerationType.AUTO)
        @Column(name = "Id")
        private Long id;
        @Column(name = "code",nullable=false,unique=true)
        private String code;
     
     
     
        //relation avec la table Role
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "menu")
        private Collection<Rolemenu> rolemenuCollection;
     
        //relation avec la table User
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "menu")
        private Collection<Usermenu> usermenuCollection;
     
        //relation avec la table Module
        @JoinColumn(name = "Moduleid", referencedColumnName = "Id")
        @ManyToOne
        private Modulesecurite moduleid;
     
        public Menu() {
        }
     
        public Menu(String code) {
            this.code = code;
        }
    //getters/setters
    }
    voici l'entité que je veux supprimer RoleMenu

    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
     
    @Entity
    @Table(name = "rolemenu")
     
    public class Rolemenu implements DAOEntry {
     
        @EmbeddedId
        protected RolemenuPK rolemenuPK;
     
     
        @JoinColumn(name = "Menu_id", referencedColumnName = "Id", insertable = false, updatable = false)
        @ManyToOne(fetch=FetchType.EAGER,optional = false)
        private Menu menu;
     
        @JoinColumn(name = "Role_id", referencedColumnName = "Id", insertable = false, updatable = false)
        @ManyToOne(fetch=FetchType.EAGER,optional = false)
        private Role role;
     
        public Rolemenu() {
             this.rolemenuPK = new RolemenuPK();
        }
     
        public Rolemenu(RolemenuPK rolemenuPK) {
            this.rolemenuPK = rolemenuPK;
        }
     
        public Rolemenu(Long codeMenu, Long codeRole) {
            this.rolemenuPK = new RolemenuPK(codeMenu, codeRole);
        }
    //getters/setters
     
    }
    comme je l'ai dit tout precedement pour les autres entités comme ici dans cet exemple la supression de menu et role fonctionne

    voici le code si besoin de la methode de suppression

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      public void delete(T entry) {
            //il est important de rendre l 'etat de l'entite persistant
            this.getEntityManager().remove(this.getEntityManager().merge(entry));
     
        }
    Cordialement

  2. #2
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut
    Bonjour
    juste pour relancer le sujet car je suis bloqué j'ai essayé d'utiliser la méthode flush de l'entity Manager pour synchroniser ce dernier avec la base de données mais toujours rien.mais ce qui m'intrigues est que la supression des classes simples marchent donc par élimination je pense que le problème ne se situe pas au niveau de la méthode delete mais plutot du comment supprimer ces tables particulières.

    Y'a t-il une étape ou une procédures à verifier avant de supprimer une classe association, je n'en sais pas grand chose.pour le moment je fouines et essayes de comprendre ce qui se passe!!

    Cordialement

  3. #3
    Membre très actif Avatar de bruneltouopi
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    308
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

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

    Informations forums :
    Inscription : Janvier 2010
    Messages : 308
    Par défaut les cascades
    j'ai résolu mon problème juste en enlevant les CASCADES dans les relations n-aires.ça passe mais je ne sais pas trop pourquoi la presence de la cascade bloque la suppression

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. Réponses: 0
    Dernier message: 25/04/2012, 18h35
  3. Réponses: 2
    Dernier message: 18/11/2010, 13h00
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Réponses: 4
    Dernier message: 15/10/2009, 13h33

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