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 :

Je n'arrive pas à insérer une clé primaire composée dans Hibernate


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 1
    Par défaut Je n'arrive pas à insérer une clé primaire composée dans Hibernate
    Bonjour,
    J'espère vraiment que vous m'aidiez sur ce point là parce que ça fait plus d'une semaine que je cherche la solution mais en vain.
    Bon, j'ai deux tables; affectation et article et ils sont reliez par une association affecter qui a un attribut de plus : quantite.
    J'ai généré le mapping et les classe POJO automatiquement depuis netBeans. J'ai obtenu alors deux 4 classes : affectation, article, Affecter et AffecterId. Les deux dernières classes ont un seul fichier de mapping : Affecter.hbm.xml
    Le problème est quand je veux insérer dans Affecter j'obtiens toujours une erreur : java.lang.classCastException.

    addAffectation.xhtml
    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
     
    <html xmlns="http://www.w3.org/1999/xhtml"
          xmlns:h="http://xmlns.jcp.org/jsf/html"
          xmlns:f="http://xmlns.jcp.org/jsf/core">
        <head>
            <title>TODO supply a title</title>
            <script>
                function confirmer()  {
                    return confirm("Voulez-vous vraiment supprimer cette ligne?");
                }
            </script>
            <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        </head>
        <body>
     
            <!-- CHOISIR LA DIVISION :-->
            <h:form id="division">
                <table border="1px solid black">
                    <tr>
                        <td><h:outputLabel value="Choisir la division : " for="divis"></h:outputLabel></td>
                        <td><h:selectOneMenu value="#{affectationBean.entite}" id="divis" style="width: 100%">
                                <f:selectItem itemValue="" itemLabel=""></f:selectItem>
                                <f:selectItems var='o' itemValue="#{o.idEntiter}" itemLabel="#{o.service}" value="#{affectationBean.listDivision}"></f:selectItems>
                            </h:selectOneMenu>
                        </td>
                    </tr>
                    <tr>
                        <td><h:outputLabel value="Date : " for="date"></h:outputLabel></td>
                        <td><h:inputText value="#{affectationBean.date}" id='date'></h:inputText></td>
                    </tr>
                    <tr>
                        <td colspan="2"><center><h:commandButton value="Choisir" actionListener="#{affectationBean.addAffectation}" ></h:commandButton></center></td>
                    </tr>
                </table>
            </h:form>
     
            <!-- CHOISIR LES ARTICLES : -->
            <h:form id="article">
                <table border="1px solid black">
                    <tr>
                        <td><h:outputLabel value="Sélectionner un article : "></h:outputLabel></td>
                        <td>
                            <h:selectOneMenu value="#{affectationBean.article}" id="art" converter="articleConverter" style="width: 100%" >
     
                                <f:selectItem itemValue="" itemLabel=""></f:selectItem>
                                <f:selectItems var='o' itemValue="#{o}" itemLabel="#{o.designation}" value="#{affectationBean.articles}" ></f:selectItems>
                            </h:selectOneMenu>
                        </td>
                    </tr>
                    <tr>
                        <td><h:outputLabel value="Quantité : " for="qte"></h:outputLabel></td>
                        <td><h:inputText value="#{affectationBean.quantite}" id="qte"></h:inputText></td>
                    </tr>
                    <h:commandButton value="Ajouter dans la liste " actionListener="#{affectationBean.addInList}" ></h:commandButton>
                </table>
            </h:form>
     
            <!-- LISTES DES ARTICLES ET QUANTITE SELECTIONNER -->
            <br/><br/><br/><br/>
            <h1>Liste des articles à affecter :</h1>
            <h:form >
                <h:dataTable value="#{affectationBean.itemses}" var="o" border="1" style="border: 1px solid black;">
     
                    <h:column >
                        <f:facet name="header">Article </f:facet>
                        <h:outputText value="#{o.article.designation}"></h:outputText>
                    </h:column>
                    <h:column >
                        <f:facet name="header">Quantité dans le stock </f:facet>
                        <h:outputText value="#{o.article.quantitestock}"></h:outputText>
                    </h:column>
                    <h:column >
                        <f:facet name="header">Quantité demandé</f:facet>
                        <h:outputText value="#{o.quantite}"></h:outputText>
                    </h:column>
     
                    <h:column>
                        <f:facet name="header">Supprimer</f:facet>
                        <h:commandLink onclick="return confirmer()" actionListener="#{affectationBean.deleteArticle}">
                            <h:outputText value="Supprimer"></h:outputText>
                            <f:param name="id" value="#{o.article.idArticle}"></f:param>
                        </h:commandLink>
                    </h:column>
                </h:dataTable>
                <h:commandButton value="Affecter " actionListener="#{affectationBean.validerAffectation}" ></h:commandButton>
            </h:form>
        </body>
    </html>
    affectationBean.java
    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
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    @ManagedBean
    @SessionScoped
    public class AffectationBean {
         private Integer idAffectation;
         private String entite;
         private String date;
         private String quantite;
     
         //METIER ENTITE ==== DIVISION :
         EntiteM entiteM = new EntiteM();
         private List<Entite> listDivision;
     
         //Metier AFFECTATION :
         AffectationM affectationM = new AffectationM();
     
         //LISTE DES ARTICLES:
         private Article article;
         private List<Article> articles;
         ArticleM articleM = new ArticleM();
     
         //AJOUTER LES ARTICLES SELECTIONNES DANS UNE LISTE
         private List<SelectedItems> itemses;
     
         @PostConstruct
         public void initBean() {
             listDivision = entiteM.findAll();
     
             articles = articleM.findAll();
         }
     
        public String getEntite() {
            return entite;
        }
     
        public void setEntite(String entite) {
            this.entite = entite;
        }
     
        public String getDate() {
            return date;
        }
     
        public void setDate(String date) {
            this.date = date;
        }
     
        public List<Entite> getListDivision() {
            return listDivision;
        }
     
        public void setListDivision(List<Entite> listDivision) {
            this.listDivision = listDivision;
        }
     
        public Article getArticle() {
            return article;
        }
     
        public void setArticle(Article article) {
            this.article = article;
        }
     
        public List<Article> getArticles() {
            return articles;
        }
     
        public void setArticles(List<Article> articles) {
            this.articles = articles;
        }
     
        public String getQuantite() {
            return quantite;
        }
     
        public void setQuantite(String quantite) {
            this.quantite = quantite;
        }
     
        public List<SelectedItems> getItemses() {
            return itemses;
        }
     
        public void setItemses(List<SelectedItems> itemses) {
            this.itemses = itemses;
        }
     
     
     
         public void addAffectation(ActionEvent e)   {
             String idType = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("division:divis");
             Entite e1 = entiteM.findById(Integer.valueOf(idType));
             Affectation affectation = new Affectation();
             affectation.setDate(date);
             affectation.setEntite(e1);
             affectationM.Add(affectation);
         }
     
         public void addInList(ActionEvent e)    {
             SelectedItems items = new SelectedItems();
             String idArt = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("article:art");
             items.setArticle(articleM.findById(Integer.valueOf(idArt)));
             items.setQuantite(Integer.valueOf(quantite));
             itemses.add(items);
         }
     
         public void deleteArticle(ActionEvent e)    {
            Integer idArticle = Integer.valueOf(getParam("id"));
            System.out.println("id article à supprimer : "+idArticle);
            for(SelectedItems a1: itemses) {
                if(idArticle == a1.getArticle().getIdArticle())   
                    itemses.remove(a1);
                System.out.println("Succès");
            }
        }
     
         public String getParam(String name)    {
            FacesContext fc = FacesContext.getCurrentInstance();
            Map<String , String> param = fc.getExternalContext().getRequestParameterMap();
            return param.get(name);
        }
    }

  2. #2
    Membre confirmé
    Homme Profil pro
    éléve ingénieur
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : éléve ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Par défaut
    Bonjour

    je travaille aussi sur un projet avec JSF et Hibernate et actuellement je me suis bloqué sur ce cas la , netbeans m'a généré la même chose que toi classM , classN, classMn et classMnID , j'arrive pas à créer une méthode d'insertion pour la classMn qui contient deja 3 objets objetM , objetN et objetID . peut etre dans le cas d'une association 1,n 1,n netbeans ajoute une classe (classeID) qui contient que les identifiants et ça ce qui m'a causer le probleme . si jamais vous arrivez à trouver une solution vous me l'annoncer et merci

  3. #3
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    salut,
    peux-tu nous montrer la classe :
    tu pourras faire ainsi:
    Affecter et AffecterId
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Embeddable
    public class AffecterId implements Serializable
    {
      ...
    }
    ensuite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      @Entity
    public class Affecter {
    @Id
    private AffecterId id;
    ...
    }
    Eric

  4. #4
    Membre confirmé
    Homme Profil pro
    éléve ingénieur
    Inscrit en
    Mai 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : éléve ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 75
    Par défaut
    Salut

    j'ai enfin réussi à trouver la solution grâce à eric

    chaimae il faut que tu charges aussi AffecterID

    voici un exemple de mon code

    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
     
     
    public class ConducteurVehiculeController {
     
        private List<Conducteurvehicule> lista = new ArrayList<Conducteurvehicule>();
        private Conducteurvehicule  cv = new Conducteurvehicule();
        private Conducteurvehicule CvNew = new Conducteurvehicule();
        private ConducteurvehiculeId CVIDNEW = new ConducteurvehiculeId();
        private String matricule ; 
        private String CIN ; 
         private String matriculeNew ; 
        private String CinNew ; 
     
      /* Inserer un row */
        public String  insert () {
     
            ConducteurVehiculeDao dao = new ConducteurVehiculeDao() ;
     
             VehiculeDao VDao = new VehiculeDao();
             ConducteurDao conducteurDao= new ConducteurDao();
     
            Vehicule vehicule = VDao.getVehiculeByImmat(matriculeNew);
             Conducteur conducteur = conducteurDao.getConducteurByCin(CinNew);
     
             CVIDNEW.setCin(CinNew);
             CVIDNEW.setImmatriculation(matriculeNew); 
     
     
     
     
             CvNew.setConducteur(conducteur);
             CvNew.setVehicule(vehicule);
             CvNew.setId(CVIDNEW); 
     
             String msg ; 
     
             if(dao.create(CvNew)){
                 msg="Row enregistré correctement";
                 FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, msg, null);
                 FacesContext.getCurrentInstance().addMessage(null, message); 
             }else {
     
                 msg="L'enregistrement a echoué";
                 FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, null);
                 FacesContext.getCurrentInstance().addMessage(null, message); 
             }
     
             this.clear();
     
             return "succes" ;
     
        }
     
    }

Discussions similaires

  1. Je n'arrive pas à ajouter une clé primaire
    Par sab_info dans le forum Développement
    Réponses: 6
    Dernier message: 23/02/2016, 08h57
  2. Réponses: 9
    Dernier message: 01/12/2010, 05h24
  3. Réponses: 7
    Dernier message: 25/01/2006, 21h37
  4. [HTML][CSS] W3C--> Je n'arrive pas à résoudre une erreur
    Par gwendy dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 23/12/2005, 23h50
  5. Je n'arrive pas à détruire une fenêtre
    Par CORREGE Frédéric dans le forum MFC
    Réponses: 6
    Dernier message: 22/02/2004, 20h28

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