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 :

Problème avec oneToMany


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Par défaut Problème avec oneToMany
    salut,

    je travail avec jpa hibernate

    Dans une relation "one to many" entre ces classes (CV et degrees). mon scénario: un CV a 3 dégrées.. quand je veux supprimer un dégrée d'un CV je obtient cette erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Transaction rolled back  exception..
     
    Caused by: java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (cv/cv_degrees, CONSTRAINT FKA278F3B18D2CAE7 FOREIGN KEY (degrees_DegreeId) REFERENCES degrees (DegreeId))

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    476
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 476
    Par défaut
    je débute simplement dans le jpa, mais ce que je comprends de ton erreur que j'ai déjà eu, c'est que dans ton mapping one-to-many et many-to-one, tu as créé une table de jointure contenant les clés primaires de CV et Degrée.
    Comme cette clé à besoin de l'ID de Degrée, tu ne peux pas supprimer de Degrée. Il te faut donc supprimer d'abord la table de jointure dans la base.

    Dans un one-to-many, il n'est pas nécessaire d'avoir une table de jointure, on cherche juste à liés les B à A par l'id de A.
    Dans ton cas, simplifie les choses en faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @OneToMany(mappedBy = "CV", cascade = { CascadeType.ALL })
    		public Set<Degree> getDegrees() {
    			return degrees;
    		}
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @ManyToOne
    		@JoinColumn(nullable=false)
    		public Degree getDegree() {
    			return degree;
    		}
    chez moi, ca me rajoute la colonne CV_id dans la table Degree au lancement de l'appli.

  3. #3
    Membre éclairé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2007
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 36
    Par défaut
    Pour pouvoir t'aider, il faudrait que tu nous indique ton code : les classes CV et Degree, le code où tu supprimes ton Degree, etc.

Discussions similaires

  1. Problème avec l'annotation oneToMany
    Par kata001 dans le forum JPA
    Réponses: 1
    Dernier message: 03/01/2014, 08h31
  2. [EJB3 Entity] Problème avec les annotations de type @OneToMany
    Par Hello_World dans le forum Java EE
    Réponses: 6
    Dernier message: 30/08/2010, 14h20
  3. [EJB3] Problème avec OneToMany
    Par tomy29 dans le forum Java EE
    Réponses: 0
    Dernier message: 20/12/2009, 11h33
  4. Problème avec les OneToMany relations
    Par sim_mmm dans le forum JPA
    Réponses: 0
    Dernier message: 25/08/2009, 04h10
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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