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 :

mes _FK ne sont pas persistés dans ma base oracle


Sujet :

JPA Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 103
    Points
    103
    Par défaut mes _FK ne sont pas persistés dans ma base oracle
    Bonjour,

    j'ai un "client" qui a plusieurs "reservation" et quand je persiste le client, le champs "client_fk" n'est pas renseigné dans la table reservation alors que tous les autres champs le sont.

    avez vous quelque chose à me proposer ?

    la reservation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @Entity
    @Table(name="reservations_services")
    public class Reservation implements java.io.Serializable {
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long        id;
     
       @ManyToOne(fetch=FetchType.EAGER)
       @JoinColumn(name="client_fk",nullable=false)
       private Client client;
    ....
    le client :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Entity
    @Table(name="clients_services")
    public class Client implements java.io.Serializable {
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long        id;
     
        @OneToMany(mappedBy="client", cascade=CascadeType.PERSIST, targetEntity=Reservation.class,fetch=FetchType.LAZY )
        private List   	<Reservation>resas;
    ....
    server : glassfish
    ide : netbeans

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 952
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 952
    Points : 4 378
    Points
    4 378
    Par défaut
    Citation Envoyé par mickael.guilbert Voir le message

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @Entity
    @Table(name="reservations_services")
    public class Reservation implements java.io.Serializable {
     
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO)
        private Long        id;
     
       @ManyToOne(fetch=FetchType.EAGER)
       @JoinColumn(name="client_fk",nullable=false)
       private Client client;
    ....
    avec nullable=false, si vous persistez une réservation sans avoir assigner le client vous devriez avoir une exception…

    si vous n'en avez pas, c'est qu'il y a un problème en amont…

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    je ne comprend pas, je suis deja dans ce cas (nullable=false).

    Et effectivement je n'ai pas d'exceptions.

    Ce n'est pas à moi de renseigner "client_fk". Quand je persist mon client qui a 3 resas (par expl) , les 3 resas devraient etre enregistré avec "client_fk" renseigné par le system de persistence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Client clientWithResas= null;
    .... Construction du client et ajout de 3 resas sans renseigner la fk car client pas encore enregistré.....
    em.persist(clientWithResas);
    ==> la ligne client est bien créée , les 3 lignes resas aussi mais sans les fk

    Tu penses a un probleme de conf du sever ?

  4. #4
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 103
    Points
    103
    Par défaut je vais etre + precis sur le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Client clientWithResas= null;
    clientWithResas = new Client();
    clientWithResas.setNom("toto");
    clientWithResas.setPrenom("tutu");
     
    clientWithResas.getResas().add(new Reservation(chambre1));
    clientWithResas.getResas().add(new Reservation(chambre2));
    clientWithResas.getResas().add(new Reservation(chambre3));
     
    em.persist(clientWithResas);
    Il faut mettre dans Reservation une reference sur le client ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    clientWithResas.getResas().add((new Reservation(chambre1)).setClient(clientWithResas));
    je ne penses pas ?

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    210
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 210
    Points : 103
    Points
    103
    Par défaut
    c'est etrange ce systeme

    un client qui reference des reservations qui referencent ce meme client qui reference ces reservations qui ...

    Il n'y a jamais de problemes de references circulaires ?

    ma solution dans l'entity Client:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @PrePersist
        @PreUpdate
        private void validate(){
            Iterator ite = this.resas.iterator();
            Reservation resaTempo;
            while (ite.hasNext()){
                    resaTempo = (Reservation)ite.next();
                    resaTempo.setClient(this);
            }
        }

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

Discussions similaires

  1. Mes beans ne sont pas reconnus dans la JSP
    Par daydream123 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/03/2012, 11h39
  2. Mes objets ne sont pas persistés
    Par JulienZ dans le forum JPA
    Réponses: 1
    Dernier message: 16/08/2009, 14h47
  3. Mes requêtes nommées ne sont pas trouvées dans mon war
    Par ploxien dans le forum Hibernate
    Réponses: 1
    Dernier message: 25/02/2009, 13h54
  4. Réponses: 26
    Dernier message: 05/02/2007, 16h57

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