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 :

probleme clé étrangère


Sujet :

Hibernate Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Février 2013
    Messages : 81
    Points : 34
    Points
    34
    Par défaut probleme clé étrangère
    Salut,
    j'ai une interface d'ajout produit qui contient list déroulante libelle de catégorie, lorsque je fait l'insertion des donnée le clé étrangère enregistre dans la base NULL
    un produit appartient à un catégorie
    un catégorie peut contient plusieurs produit

    Classe Produit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @ManyToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "FK_CODE_CATEGORIE")
    private Categorie categorie;
     
    public Produit(String designation, int tva, double ht, int quantite, String unite, int stockMin) {
    this.designation = designation;
    this.tva = tva;
    this.ht = ht;
    this.quantite = quantite;
    this.unite = unite;
    this.stockMin = stockMin;
    }
    Classe Catégorie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
      @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "CODE_CATEGORIE")
        private int codeCategorie;
        @Column(name = "LIBELLE")
        private String libelle;
     
    @OneToMany(targetEntity = Produit.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "categorie")
    private List<Produit> produits;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        @Override
        public void ajouterProduit(Produit p) {
            Session session = HibernateUtil.getSessionFactory().openSession();
            try {
                session.beginTransaction();
                session.save(p);
                session.getTransaction().commit();
                session.close();
                System.out.print("bien ajouté");
            } catch (HibernateException e) {
                System.out.print("erreur insertion" + e.getMessage());
            }
        }
    Quelqu'un saurait-il m'indiquer comment résoudre ce problème ?

    Merci d'avance pour votre aide.

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Points : 71
    Points
    71
    Par défaut
    Tu passes un produit. Il faut peut-être spécifier la catégorie qui lui est associée aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    private Categorie categorie;
     
    public Produit(String designation, int tva, double ht, int quantite, String unite, int stockMin, Categorie categorie) {
    this.designation = designation;
    this.tva = tva;
    this.ht = ht;
    this.quantite = quantite;
    this.unite = unite;
    this.stockMin = stockMin;
    this.categorie = categorie;
    }

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Février 2013
    Messages : 81
    Points : 34
    Points
    34
    Par défaut
    ça marche pas

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2014
    Messages : 101
    Points : 71
    Points
    71
    Par défaut
    Ben tu passes quoi comme objet de type Produit ? Il contient quoi ? Est-ce que tu as mis un objet Categorie avec les paramètres liés à la clé primaire de la catégorie que tu veux sélectionner de remplis ?

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Février 2013
    Messages : 81
    Points : 34
    Points
    34
    Par défaut
    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
     
    @Entity
    @Table(name = "CATEGORIE")
    public class Categorie implements java.io.Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "CODE_CATEGORIE")
        private int codeCategorie;
        @Column(name = "LIBELLE")
        private String libelle;
     
        @OneToMany(targetEntity = Produit.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "categorie")
        private List<Produit> produits;
     
    public Categorie(int codeCategorie, String libelle) {
            this.codeCategorie = codeCategorie;
            this.libelle = libelle;
        }
     
        public Categorie(String libelle) {
            super();
            this.libelle = libelle;
        }
     
        public int getCodeCategorie() {
            return codeCategorie;
        }
     
        public Categorie() {
            super();
        }
     
        public void setCodeCategorie(int codeCategorie) {
            this.codeCategorie = codeCategorie;
        }
     
        public String getLibelle() {
            return libelle;
        }
     
        public void setLibelle(String libelle) {
            this.libelle = libelle;
        }
     
        public List<Produit> getProduits() {
            return produits;
        }
     
        public void setProduits(List<Produit> produits) {
            this.produits = produits;
        }
     
    }

    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
     
    @Entity
    @Table(name = "PRODUIT")
    public class Produit implements java.io.Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Column(name = "REFERENCE")
        private int reference;
        @Column(name = "DESIGNATION")
        private String designation;
        @Column(name = "TVA")
        private int tva;
        @Column(name = "PRIX_HORS_TAXE")
        private double ht;
        @Column(name = "QUANTITE")
        private int quantite;
        @Column(name = "UNITE")
        private String unite;
        @Column(name = "STOCK_MINIMAL")
        private int stockMin;
     
        @ManyToOne
        @JoinColumn(name = "FK_CODE_CATEGORIE")
        private Categorie categorie;
     
        public Produit(String designation, int tva, double ht, int quantite, String unite, int stockMin, Categorie categorie) {
            this.designation = designation;
            this.tva = tva;
            this.ht = ht;
            this.quantite = quantite;
            this.unite = unite;
            this.stockMin = stockMin;
            this.categorie = categorie;
        }
     
        public Produit(String designation, int tva, double ht, int quantite, String unite, int stockMin) {
            super();
            this.designation = designation;
            this.tva = tva;
            this.ht = ht;
            this.quantite = quantite;
            this.unite = unite;
            this.stockMin = stockMin;
        }
     
        public Produit() {
            super();
        }
     
        public int getReference() {
            return reference;
        }
     
        public void setReference(int reference) {
            this.reference = reference;
        }
     
        public String getDesignation() {
            return designation;
        }
     
        public void setDesignation(String designation) {
            this.designation = designation;
        }
     
        public int getTva() {
            return tva;
        }
     
        public void setTva(int tva) {
            this.tva = tva;
        }
     
        public double getHt() {
            return ht;
        }
     
        public void setHt(double ht) {
            this.ht = ht;
        }
     
        public int getQuantite() {
            return quantite;
        }
     
        public void setQuantite(int quantite) {
            this.quantite = quantite;
        }
     
        public String getUnite() {
            return unite;
        }
     
        public void setUnite(String unite) {
            this.unite = unite;
        }
     
        public int getStockMin() {
            return stockMin;
        }
     
        public void setStockMin(int stockMin) {
            this.stockMin = stockMin;
        }
     
        public Categorie getCategorie() {
            return categorie;
        }
     
        public void setCategorie(Categorie categorie) {
            this.categorie = categorie;
        }
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <p:selectOneMenu id="cat" value="#{produitBean.produit.categorie.codeCategorie}" style="width:125px"
                                                 panelStyle="width:180px" effect="fade" filter="true" filterMatchMode="startsWith">
                                    <f:selectItem itemLabel="Select One" itemValue="1" />
                                    <f:selectItems value="#{categorieBean.itemCategorie}" />
                                </p:selectOneMenu>
    il m'affiche cette 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
     
    javax.el.PropertyNotFoundException: /view/GestionProduit.xhtml @109,128 value="#{produitBean.produit.categorie.codeCategorie}": Target Unreachable, 'categorie' returned null
    	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
    	at org.primefaces.renderkit.InputRenderer.findImplicitConverter(InputRenderer.java:170)
    	at org.primefaces.renderkit.InputRenderer.getOptionAsString(InputRenderer.java:156)
    	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeOption(SelectOneMenuRenderer.java:347)
    	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeSelectItems(SelectOneMenuRenderer.java:333)
    	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeInput(SelectOneMenuRenderer.java:114)
    	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:91)
    	at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:65)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312)
    	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
    	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
    	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
    	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
    	at org.primefaces.component.fieldset.FieldsetRenderer.encodeContent(FieldsetRenderer.java:90)
    	at org.primefaces.component.fieldset.FieldsetRenderer.encodeMarkup(FieldsetRenderer.java:72)
    	at org.primefaces.component.fieldset.FieldsetRenderer.encodeEnd(FieldsetRenderer.java:46)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:63)
    	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
    	at org.primefaces.component.dialog.DialogRenderer.encodeContent(DialogRenderer.java:172)
    	at org.primefaces.component.dialog.DialogRenderer.encodeMarkup(DialogRenderer.java:101)
    	at org.primefaces.component.dialog.DialogRenderer.encodeEnd(DialogRenderer.java:43)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
    	at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
    	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
    	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
    	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
    	at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:202)
    	at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:119)
    	at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:56)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    	at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:63)
    	at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:47)
    	at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
    	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1903)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
    	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1899)
    	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:451)
    	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
    	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: javax.el.PropertyNotFoundException: Target Unreachable, 'categorie' returned null
    	at org.apache.el.parser.AstValue.getTarget(AstValue.java:148)
    	at org.apache.el.parser.AstValue.getType(AstValue.java:82)
    	at org.apache.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:172)
    	at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
    	... 66 more

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/07/2012, 13h27
  2. probleme de definition de clé étrangère
    Par clem62173 dans le forum Requêtes
    Réponses: 0
    Dernier message: 28/03/2010, 11h48
  3. probleme clé étrangère
    Par salsabouge dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/04/2009, 18h08
  4. probleme avec CLé étrangère
    Par mystro7200 dans le forum Débuter
    Réponses: 7
    Dernier message: 21/11/2008, 07h46
  5. [Kylix] Probleme d'execution de programmes...
    Par yopziggy dans le forum EDI
    Réponses: 19
    Dernier message: 03/05/2002, 14h50

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