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 :

Insérer 2 tables avec relation à partir d'un EJB


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 234
    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 234
    Points : 1 897
    Points
    1 897
    Par défaut Insérer 2 tables avec relation à partir d'un EJB
    Bonjour,

    J'ai 2 Entity 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
     
    @Entity
    public class Adresse implements Serializable {
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
     
        private String ville;
     
        @JoinColumn(name = "id_client", referencedColumnName = "id")
        @ManyToOne(optional = false, fetch = FetchType.EAGER)
        private Client idClient;
     
    // accesseurs
    ... et :

    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
     
    @Entity
    public class Client implements Serializable {
        private static final long serialVersionUID = 1L;
     
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer id;
     
        private String nom;
     
        @OneToMany(cascade = CascadeType.ALL, mappedBy = "idClient", fetch = FetchType.EAGER)
        private List<Adresse> adresseCollection;
     
    // accesseurs
    Et la commande via un Session Bean :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void addClient(Client client) throws Exception {
     
    // client contient la List<Adresse> adresses initialisée
            em.persist(client);
     
        }
    Et la belle exception suivante à l'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     javax.persistence.PersistenceException: org.hibernate.PropertyValueException: not-null property references a null or transient value: entity.Adresse.idClient
    Comment insérer les valeurs des 2 tables en même temps car il y a une relation 1,1 to 1,n ?

    A+

  2. #2
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 234
    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 234
    Points : 1 897
    Points
    1 897
    Par défaut
    Maintenant cela fonctionne car j'ai modifié dans la classe Client le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     @OneToMany(cascade = CascadeType.ALL, mappedBy = "idClient", fetch = FetchType.EAGER)
        private List<Adresse> adresseCollection;
    ... par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     @OneToMany(mappedBy = "idClient", fetch = FetchType.EAGER)
        private List<Adresse> adresseCollection;
    Mais maintenant je n'ai plus la contrainte qui permet de supprimer en cascade quand un client est supprimé de la table Client.

    Comment faire alors ?

    Merci.

  3. #3
    Membre chevronné Avatar de Mister Nono
    Homme Profil pro
    Ingénieur Mathématiques et Informatique
    Inscrit en
    Septembre 2002
    Messages
    2 234
    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 234
    Points : 1 897
    Points
    1 897
    Par défaut
    Citation Envoyé par Mister Nono Voir le message
    Mais maintenant je n'ai plus la contrainte qui permet de supprimer en cascade quand un client est supprimé de la table Client.

    Comment faire alors ?

    Merci.
    Alors, personne n'a de solution ?

    A+

Discussions similaires

  1. lister une table avec relation one-to-many
    Par dublow dans le forum ASP.NET MVC
    Réponses: 1
    Dernier message: 27/10/2010, 10h42
  2. formulaire sur tables avec relations
    Par cath2123 dans le forum IHM
    Réponses: 1
    Dernier message: 13/04/2009, 02h15
  3. Insérer image table avec chemin relatif
    Par bobosh dans le forum Modélisation
    Réponses: 1
    Dernier message: 04/09/2008, 20h32
  4. [Requête] 2 tables avec relations un à plusieurs
    Par egg3774 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 02/05/2007, 14h42
  5. [MySQL] mysql_fetch_assoc pour 2 tables avec relation 1-1
    Par jiojioforever dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/01/2007, 09h41

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