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 :

On delete restrict et exception


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut On delete restrict et exception
    Bonjour !

    Je suis en train de me mettre à JPA.
    Prenons un exemple d'une relation complexe (n par n), comme celle de la commande et des produits qu'elle contient.
    Vous supprimez une commande, les lignes de la commande disparaissent en même temps (en ayant precisé un cascadetype.all dans l'entity commande).
    Vous supprimez un produit, s'il n'y a pas de ligne de commande, vous pouvez supprimer le produit.

    Comment on fait ça ?

    Je voudrais aussi savoir comment attraper l'exception qui en résulte.
    J'ai mis un catch pour javax.persistence.persistenceexception mais ça n'aide pas beaucoup comme information.

    Merci à tous !

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Vous supprimez un produit, s'il n'y a pas de ligne de commande, vous pouvez supprimer le produit.
    Tu veux savoir comment detecter si un produit est concerné par une ligne de commande? une petite requete suffit non?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Non, j'aurais pu résoudre le problème comme ça mais ce n'est pas ce qu'on fait généralement quand tu veux supprimer un produit.

    Quand on a la base et que tous les on cascade restrict sont mis en place et que tu fais un DELETE * FROM PRODUITS, s'il y a des lignes de commandes, SQL va te dir : na na, pas possible.

    Tout simplement parce qu'il y a un ON DELETE RESTRICT sur la clé étrangère.

    Bref, voilà, comment ça se passe avec JPA ?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    A mon avis tu peux pas gérér ça par annotation, mais en revanche programmatiquement ca le fait bien, avant de supprimer un produit, tu testes s'il n'est pas rattaché à une commande.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2010
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2010
    Messages : 3
    Par défaut
    Est ce que ça veut dire qu'il faut que je prenne en compte aussi lorsque je veux faire du ON DELETE SET NULL ?
    En fait toutes les autres contraintes, faut que je les gère à la main ?

    Ca devient lourd !
    Je viens de le voir : autant utiliser les namedqueries et créer la base directement sans passer par aucun entities non ?!

    Qu'est ce que t'en penses pour un projet qui aurait dû avoir 17 entities, maximum 20 ou 25 (mais je pense que ça va rester en dessous de 20).

    Je veux dire, les ORM sont là plus quand t'as une base énorme avec 100 tables non ? Là ça simplifie la vie. Mais jusqu'à combien de tables on peut dire qu'on peut s'en passer ?

    Est ce qu'on peut utiliser les namedqueries sans utiliser les entities ? C'est exactement comme ça que je les aurai implémenté si JPA n'existait pas. J'aurais fait des classes qui representeraient mon modèle et je leur aurai ajouté une sorte de classe annexe pour gérer leur requêtes sql personnelle.

    Merci les réponses !

  6. #6
    Membre émérite Avatar de Heimdal
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 549
    Par défaut
    @PreRemove avec ton test???

Discussions similaires

  1. operateur delete et exception
    Par ram-0000 dans le forum C++
    Réponses: 9
    Dernier message: 30/04/2008, 22h06
  2. ON DELETE RESTRICT -> Aucun effet
    Par irongomme dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 11/10/2007, 18h32
  3. Replication de bases Mysql - restriction pas de delete
    Par uvealoop dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 30/08/2007, 15h09
  4. Réponses: 7
    Dernier message: 23/05/2006, 12h32
  5. delete et update restrict ou rien
    Par Bouboubou dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 04/02/2005, 09h24

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