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 :

Insertion cascade avec JPA ne marche pas


Sujet :

JPA Java

  1. #1
    Membre averti
    Inscrit en
    Février 2011
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 18
    Par défaut Insertion cascade avec JPA ne marche pas
    Bonjour a tous,
    j'ai passé toute la journée devant cette étrange problème sans résultat ... j'explique:
    le principe est trés simple , j'ai deux tables Mere et Fil:


    le code SQL correspondant est comme suit:
    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
    CREATE TABLE mere (
    idmere INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    nom VARCHAR(50) NOT NULL,
    PRIMARY KEY(idmere)
    );
     
    CREATE TABLE fil (
    idfil INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
    mere_idmere INTEGER UNSIGNED NOT NULL,
    nom VARCHAR(50) NOT NULL,
    PRIMARY KEY(idfil, mere_idmere),
    FOREIGN KEY(mere_idmere)
    REFERENCES mere(idmere)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
    );

    avec Netbeans j'ai crée deux entités provenant de la base de donnée et deux controlleurs JPA a partir de ces deux entités (généré avec netbeans):


    seulement je veux que lorsque j'insère une nouvelle ligne dans la table Mere une liste des Fil est inserée(avec) automatiquement(disons cascade), voila mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     EntityManagerFactory emf=Persistence.createEntityManagerFactory("testvirugulePU");
       MereJpaController mjc=new MereJpaController(emf);
     
       FilJpaController fjc=new FilJpaController(emf);
     
       Mere m=new Mere(null,"mere1");//un objet mere je met null car il est auto_increment
       FilPK fpk=new FilPK();
       Fil f=new Fil(fpk,"fils1");
       java.util.List<Fil> lf=new ArrayList<Fil>();
       lf.add(f); 
       m.setFilList(lf); // assigner la liste des Fil a l'objet Mere
     
       mjc.create(m); //insertion
    un bout de code de la class FilPK :
    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
     
    @Embeddable
    public class FilPK implements Serializable {
        @Basic(optional = false)
        @Column(name = "IDFIL", nullable = false)
        private int idfil;
        @Basic(optional = false)
        @Column(name = "MERE_IDMERE", nullable = false)
        private int mereIdmere;
     
        public FilPK() {
        }
     
        public FilPK(int idfil, int mereIdmere) {
            this.idfil = idfil;
            this.mereIdmere = mereIdmere;
        }
    remarque: j'ai mis FilPK fpk=new FilPK(); sans préciser l'idfil ni idMere car ils seront générer automatiquement(je ne suis pas sure)

    il affiche cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Exception in thread "main" javax.persistence.EntityNotFoundException: Could not find   entity for id: testvirugule.FilPK[ idfil=0, mereIdmere=0 ]
    at  org.eclipse.persistence.internal.jpa.EntityManagerImpl.getReference(EntityManagerImpl.java:1279)
    at testvirugule.MereJpaController.create(MereJpaController.java:44)
    at testvirugule.Main.main(Main.java:31)
       Java Result: 1

    Helps Please.

  2. #2
    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
    ça ne colle pas, l'id de la mère ne peut pas être automatique, il doit référencer celui de l'enregistrement de la mère.

    dans l'absolu, je ne partage pas ta conception. on est en présence de personnes dans tous les cas, la nature de leur relation est autre chose.
    je dirais qu'une table de relation serait plus appropriée, ça te permettrait également de matérialiser le père et la mère... enfin, je ne connais pas ton besoin, tu n'en as peut-être pas besoin après tout...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. fopen avec localhost ne marche pas, seulement en distant
    Par __fabrice dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2006, 17h35
  2. [MySQL] DELETE en cascade..ma requete ne marche pas
    Par debie1108 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2006, 16h54
  3. Carte graphique fx5200 avec redhat9 ne marche pas
    Par nouri.moudhffar dans le forum Administration système
    Réponses: 2
    Dernier message: 24/06/2006, 15h31
  4. [CSS] Bug IE avec height ne marche pas avec les %
    Par El Riiico dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/06/2005, 17h11
  5. Réponses: 4
    Dernier message: 30/12/2004, 18h04

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