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 :

[EJB 3] Eviter la modification d'une table a partir de sa Foreign Key


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 4
    Par défaut [EJB 3] Eviter la modification d'une table a partir de sa Foreign Key
    Bonjour je vous explique mon probleme:

    J'ai une table toto et une table tata.


    dans tata se trouve : tata_id , tata_value

    dans toto se trouve : toto_id, une fk tata_id, toto_value

    dans ma table tata jai une donnée : tata_id = 1, tata_value = "coucou"

    je veux creer une nouvelle occurence dans ma table toto.

    Pour cela je procède comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Toto CurrentToto = new ToTo();
     
    Toto.settotovalue("salut");
     
    Tata CurrentTata = new Tata();
    Tata.setTataId(1);
     
    Toto.settata(CurrentTata);
     
    MyToto.Create(CurrentToTo);
    Lorsque j'execute le code, la ligne toto se rajoute mais le problème est que ca modifie egalement la ligne dans la table tata.

    Ma question est donc. Comment puis je rajouter un id tata dans une table toto sans que ce rajout affecte également ma table tata!

    voici ma classe toto

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private class Toto implements serializable{
        @Id
        @Column(name = "TOTOID", nullable = false)
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private Integer totoid;
        @JoinColumn(name = "TATAID", referencedColumnName = "TATAID")
     @ManyToOne(optional=false,Cascade={CascadeType.PERSIST},fetch=FetchType.LAZY)
        private FHTata tataid;
    }

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 156
    Par défaut
    Je n'ai pas bien saisit ton problème.
    Si dans ta base t'as déjà un enregistrement de Tata avec l'id = 1, Pourquoi coté Java recrées-tu un autre objet Tata en spécifiant cette Id.
    Si ton but est de créer un objet Toto que tu souhaites associer à un objet Tata déjà existant, il faut charger cette instance depuis la base et l'associer à ta nouvelle instance de Toto.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    long tonId = 1;
    Tata currentTata = (Tata) tonDao.loadById(Tata.class, tonId);
    Toto currentToto = new ToTo();
    currentToto.settotovalue("salut");
    currentToto.settata(currentTata);
    tonDao.save(currentToto);

Discussions similaires

  1. Ajout & modif d'une table vers l'autre
    Par BOTIGUA dans le forum Access
    Réponses: 1
    Dernier message: 17/02/2006, 18h00
  2. Tracer les modifications d'une table
    Par vinze11 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 17/02/2006, 13h44
  3. Vue non mise à jour après modification d'une table
    Par cybernet35 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 13h54
  4. date de dernière modification d'une table ?
    Par NiBicUs dans le forum Requêtes
    Réponses: 3
    Dernier message: 17/12/2004, 18h11
  5. Erreur lors de modification d'une table
    Par seb.49 dans le forum SQL
    Réponses: 11
    Dernier message: 13/01/2003, 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