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 :

Remove sur un set non pris en compte par l'entity manager


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 104
    Par défaut Remove sur un set non pris en compte par l'entity manager
    Bonjour,

    Je tente le test suivant :
    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
     
    EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa");
    EntityManager em = emf.createEntityManager();
    //début transaction
    EntityTransaction tx = em.getTransaction();
    tx.begin();
     
    ExportProfil ep3 = new ExportProfil();
    ep3.setCreationDate(new Date());
    ep3.setExportName("EP2");
    ep3.setLanguage("FR");
     
    ExportProcessType ept3 = new ExportProcessType();
    ept3.setLanguage("fr");
    ept3.setProcessTypeDN("ProcessTypeDN-EP2");
    ept3.setProcessType("ProcessType-EP2");
    ep3.addProcessType(ept3);
     
    ExportDocumentType edt3 = new ExportDocumentType();
    edt3.setLanguage("fr");
    edt3.setDocumentType("DocumentType-EP2");
    edt3.setDocumentTypeDn("DocumentTypeDN-EP2");
    ep3.addDocumentType(edt3);
     
    ExportDocumentField edf3 = new ExportDocumentField();
    edf3.setLanguage("fr");
    edf3.setDocumentFieldDN("DocFieldDN1ForDocumentType-EP2");
    edf3.setDocumentField("DocField1ForDocumentType-EP2");
    edt3.addDocumentField(edf3);
    edf3 = new ExportDocumentField();
    edf3.setLanguage("fr");
    edf3.setDocumentFieldDN("DocFieldDN2ForDocumentType-EP2");
    edf3.setDocumentField("DocField2ForDocumentType-EP2");
    edt3.addDocumentField(edf3);
     
    em.persist(ep3);
    //fin transaction
    tx.commit();
    //fin EntityManager
    em.close();
    //fin EntityMangerFactory
     
     
    //emf = Persistence.createEntityManagerFactory("jpa");
    em = emf.createEntityManager();
    //début transaction
    tx = em.getTransaction();
    tx.begin();
     
    Set<ExportDocumentType> exportDocumentTypes3 = ep3.getDocumentTypes();
     
    for (ExportDocumentType documentType : exportDocumentTypes3) {    
        int i = 1;
        if (i==1) {
            LOG.info("DOCUMENT TYPE WHICH SHOULD BE REMOVED : " + documentType);
            ep3.remove(documentType);    
            i++;
        }
        /*
        for (ExportDocumentField documentField : documentType.getDocumentFields()) {
            documentField.setDocumentFieldDN(documentField.getDocumentFieldDN() + "pouet");
        }
        */
    }
     
    em.merge(ep3);
    tx.commit();
    //fin EntityManager
    em.close();
    //fin EntityMangerFactory
    emf.close();
    L'instance de documentType que je remove du set derrière le ExportProfil est bien supprimée au niveau JVM. Par contre le em.merge(ep3) devrait le supprimer de la base ce qui n'est pas le cas.

    Ca doit être tout con mais je trouve pas...

    J'ai attaché les sources des objets du modèle au cas ou.

    A+,
    Blured.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 70
    Par défaut
    A mon avis l’objet dont la référence est ep3 n’est pas managé (pas d’identifiant) au moment où vous faites un merge la dessus (à vérifier).
    Pour vérifier cela, je vous propose de mettre ep3 = em.persist(ep3); à la ligne où vous faites le persist.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 104
    Par défaut
    em.persist() retourne void donc la solution que vous proposez n'est pas exploitable

  4. #4
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Regarde du côté des options de cascade sur ton Set, je pense que tu as oublié de les préciser...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 104
    Par défaut
    On ExportProfil I've got :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	@OneToMany(mappedBy="profil", cascade={CascadeType.ALL})
    	public Set<ExportDocumentType> getDocumentTypes() {
    		return documentTypes;
    	}
    on DocumentType I've got :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        @ManyToOne(cascade=CascadeType.ALL)
        @JoinColumn(name="profil_id")
    	public ExportProfil getProfil() {
    		return profil;
    	}
    ...

  6. #6
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Signe euro non pris en compte par htmlentities
    Par akrogames dans le forum Langage
    Réponses: 5
    Dernier message: 25/06/2009, 21h24
  2. Réponses: 16
    Dernier message: 19/05/2008, 17h09
  3. Fichiers non pris en compte par checkstyle
    Par alexandre7 dans le forum Eclipse
    Réponses: 0
    Dernier message: 23/04/2008, 16h55
  4. CSS non pris en compte par ff
    Par krapno dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 29/08/2006, 14h25
  5. CSS non pris en compte par ie (AJAX)
    Par Wanty dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 29/08/2006, 12h19

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