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 :

Exception lors d'une tentative d'insertion [EJB3 Entity]


Sujet :

Java EE

  1. #1
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 898
    Points
    1 898
    Par défaut Exception lors d'une tentative d'insertion
    Bonjour,

    J'ai une application qui appelle un session bean :

    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
     
    public static void main(String[] args) {
            try {
     
                Context context = new InitialContext();
     
                GestionClient gestionClient = (GestionClient) context
                        .lookup("entreprise-ear/GestionClientBean/remote");
     
                Utilisateur user = new Utilisateur();
                user.setNom("TEST VILLE");
     
                List<Adresse> adresses = new ArrayList<Adresse>();
     
                Adresse adr = new Adresse();
                adr.setVille("VILLE");
                adresses.add(adr);            
     
                user.setAdresses(adresses);
     
                gestionClient.addUtilisateur(user);
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    ... et la méthode du Session Bean :

    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
    public void addUtilisateur(Utilisateur user) throws Exception {
            
            em.persist(user);
        
    /*
            List<Adresse> adresses = user.getAdresses();
            
            for (Adresse adresse : adresses) {
                
                adresse.setUtilisateur(user);
                em.persist(adresse);
            }
    */
            
        }
    Et voici les 2 Entity Bean associés :

    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
     
    @Entity
    public class Utilisateur implements Serializable {
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Integer id;
     
        private String nom;
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "utilisateur")
        private List<Adresse> adresses;
     
        public Utilisateur() {
        }
     
    // accesseurs ...
    ... et son cousin :

    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
     
    @Entity
    public class Adresse implements Serializable {
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Integer id;
     
        private String ville;
     
        @ManyToOne
        @JoinColumn(name = "utilisateur_fk", referencedColumnName = "id")
        private Utilisateur utilisateur;
     
    // accesseurs ...
    Un utilisateur peut donc avoir plusieurs adresses et il existe donc une relation (1,1 to 1,n) entre la table Utilisateur et la table Adresse.

    Et bien la ligne :

    ... du Session Bean ajoute bien l'utilisateur.

    Mais quand je décommente les lignes :

    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
    public void addUtilisateur(Utilisateur user) throws Exception {
            
            em.persist(user);
        
    
            List<Adresse> adresses = user.getAdresses();
            
            for (Adresse adresse : adresses) {
                
                adresse.setUtilisateur(user);
                em.persist(adresse);
            }
    
            
        }
    ... j'obtiens l'exception suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    2008-12-15 02:51:55,927 DEBUG [org.hibernate.util.JDBCExceptionReporter] (WorkerThread#0[127.0.0.1:54640]) could not insert: [entity.Adresse] [insert into Adresse (utilisateur_fk, ville) values (?, ?)]
    java.sql.SQLException: Field 'id' doesn't have a default value
    Pourquoi cela ?

    A+
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

  2. #2
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur Mathématiques et Informatique
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 232
    Points : 1 898
    Points
    1 898
    Par défaut
    Tout bête : il n'y avait pas l'AUTO_INCREMENT sur la clé de la table Adresse.
    La connaissance ne sert que si elle est partagée.
    http://ms2i.net

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

Discussions similaires

  1. Problème lors d'une tentative d'IMPORT
    Par muchmorehuman dans le forum Oracle
    Réponses: 3
    Dernier message: 10/03/2009, 10h36
  2. Exception lors d'une supression dans un GridView
    Par LhIaScZkTer dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/06/2008, 17h57
  3. Bug Excel lors d'une tentative de modif de code VBA
    Par aerodynamique dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 27/11/2007, 11h28
  4. [XSD] Exception lors d'une validation
    Par cash3000 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 08/06/2006, 09h17
  5. [JDBC] SQL Exception lors d'une Query !
    Par Castagnems dans le forum JDBC
    Réponses: 5
    Dernier message: 30/04/2004, 12h00

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