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

Hibernate Java Discussion :

Suppression d'une foreign key


Sujet :

Hibernate Java

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 81
    Par défaut Suppression d'une foreign key
    Bonjours j'ai les deux entity suivantes :
    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
    @Entity
    public class Operation {
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	@Column(name = "id") 
    	private Long id;
    	@Column(name = "date", nullable = false)
    	private Date date;
    	@ManyToOne
    	private CompteVirtuel comptevirtuel;
    	@ManyToOne
    	private CompteBanque compteBanque;
    	@Column(name = "montant", nullable = false)
    	private float montant;
    	@Column(name = "debit", nullable = false)
    	private Boolean debit;
    	@Column(name = "credit", nullable = false)
    	private Boolean credit;
    	@Column(name = "intitule", nullable = false)
    	private String intitule;
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    @Entity
    public class CompteVirtuel {
     
    	@Id
    	@GeneratedValue(strategy = GenerationType.AUTO)
    	@Column(name = "id") 
    	private int id;
    	@Column(name = "intitule", nullable = false)
    	private String intitule;
    j'aimerais pouvoir supprimer un compte virtuel quand je le souhaite, et que dans opération les foreign key passe à null comment faire ?
    en faisant ainsi j'ai une exception

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Session s = HibernateUtils.getSession();
    			 CompteVirtuel cv = chercherCompteVirtuel(id);
    			 Transaction tx = s.beginTransaction();
    			 s.delete(cv);
    			 tx.commit();
    			 s.close();
    merci pour vos réponses

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par flomomo Voir le message
    en faisant ainsi j'ai une exception
    Attends, je consulte les augures pour deviner l'exception et son message.....


    Sinon, il n'y a pas de mécanisme pour mettre automatiquement les Foreign key à null. Et pour cause, le but des contraintes foreign key est d'éviter cette situation où l'on supprime une donnée encore référencée par d'autres données

    si tu veux tout faire passer à null, il faut le faire avec un query, du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Query q = s.createQuery("update Operation o set o.comptevirtuel = null where o.comptevirtuel = :comptevirtuel");
    q.setParameter("comptevirtuel",cv);
    q.executeUpdate();

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 81
    Par défaut
    Merci de ta réponse rapide d'accord c'est ce que je redoutais que ce ne soit pas "automatiquement" possible j'avais déjà pensé à cette solution de mettre à jours au préalable les foreign keys je vais faire ça du coup

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2013
    Messages : 81
    Par défaut
    Je reviens ici parce que ta requête est bonne sauf dans le cas où il n'y a pas de Foreign key, il faut donc update uniquement si on a une opération avec ce compte virtuel ! Je ne vois pas comment faire ça avec un exist ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. listes les champs + table d'une FOREIGN KEY
    Par richard038 dans le forum SQL
    Réponses: 3
    Dernier message: 25/08/2007, 11h20
  2. Réponses: 1
    Dernier message: 14/02/2007, 10h16
  3. Une Foreign Key peut-elle être null ?
    Par bassim dans le forum Firebird
    Réponses: 9
    Dernier message: 21/11/2006, 20h20
  4. suppression d'une foreign key
    Par GMI dans le forum InterBase
    Réponses: 7
    Dernier message: 01/02/2005, 11h07
  5. [débutant] Aide pour mettre une FOREIGN KEY sur une table
    Par cauldron dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/11/2004, 17h16

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