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

JPA Java Discussion :

Incapable de faire une sauvegarde avec des relations Many to Many


Sujet :

JPA Java

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2015
    Messages : 53
    Points : 59
    Points
    59
    Par défaut Incapable de faire une sauvegarde avec des relations Many to Many
    Salut

    J'ai une relation many to many.

    Dans ma classe lodger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @ManyToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE}, mappedBy = "lodger")
    private List<Contact> contactList;

    Dans ma classe contact

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    @ManyToMany
    @JoinTable(name = "lodger_contact", joinColumns = @JoinColumn(name = "contact_id"), inverseJoinColumns = @JoinColumn(name = "lodger_id"))
    private List<Lodger> lodger;
    Dans la bd, j'ai des données dans chacune de ses tables, je voudrais maintenant faire des associations entre les deux.

    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
       public void associateDissociateLodgerAndContact(Long lodgerId, List<Long> contactIdToDissociates, List<Long> contactIdToAssociates) {
            Lodger lodger = lodgerRepository.findOne(lodgerId);
     
            List<Contact> contactList; // = contactRepository.findAll(contactIdList);
     
            if (lodger.getContactList() == null) {
                lodger.setContactList(new ArrayList<>());
                contactList = lodger.getContactList();
            } else {
                contactList = lodger.getContactList();
            }
     
            if (contactIdToDissociates != null) {
     
                for (Iterator<Contact> iterator = contactList.iterator(); iterator.hasNext();) {
                    Contact contact = iterator.next();
     
                    for (Long contactId : contactIdToDissociates) {
                        if (contact.getContactId().longValue() == contactId.longValue()) {
                            iterator.remove();
                            break;
                        }
                    }
     
                }
            }
     
            List<Contact> contactToAssign = contactRepository.findAll(contactIdToAssociates);
     
            lodger.getContactList().addAll(contactToAssign);
     
            lodgerRepository.save(lodger);
        }

    Aucune sauvegarde n'est fait.

    Une idée?

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Apprenti jee
    Inscrit en
    Mars 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Apprenti jee

    Informations forums :
    Inscription : Mars 2016
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Salut,

    Tu n'as pas besoin d'un programme à proprement parler pour écrire dans la table contenant les 2 clés étrangères.
    Tout ce que tu as à faire, c'est renouvelé via une requête update (merge en java) ou ajouter de nouvelles données dans les 2 tables ayant la relation pour qu'automatiquement un insert into se fasse avec les données à mettre dedans. perso c'est ce que j'ai fais et ça fonctionne très bien.
    Il faut juste que tu pense à utiliser tes variables associées au ManyToMany.

Discussions similaires

  1. faire une passerelle avec des machines virtuelles
    Par Lionel_aw dans le forum Windows XP
    Réponses: 7
    Dernier message: 06/10/2008, 16h35
  2. comment faire une classe avec des contrôles?
    Par jffaber dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2008, 16h19
  3. Faire une soustraction avec des heures
    Par patmar83 dans le forum VBA Access
    Réponses: 2
    Dernier message: 16/06/2008, 22h53
  4. [Tableaux] faire une page avec des catégorie
    Par kevinf dans le forum Langage
    Réponses: 20
    Dernier message: 29/09/2006, 05h58
  5. Faire une boucle avec des variables vides ?
    Par byloute dans le forum Linux
    Réponses: 5
    Dernier message: 23/02/2006, 09h33

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