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 :

enregistrer les informations d'une table lié par une jointure


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut enregistrer les informations d'une table lié par une jointure
    Bonjour a tous,

    Ca fait un bout de temps que je galère là dessus et je ne comprend pas. pourquoi les donnée de mesures ne sont pas rajoutées dans ma base de donnée.

    un patient a une ou plusieurs mesure.
    et une mesure correspond a un seul patient.

    Voila le main :

    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
     
    public class Schema {
     
     
    	public static void main(String[] args) {
     
    		EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");
    		EntityManager em = emf.createEntityManager();
    		em.getTransaction().begin();
    		Patient p1 = new Patient("Oki", "mimi", "2 rue des gateaus", 75018, "Paris", "0147601439", "okimimi@gmail.com", "doc guessoum", 1, "à suivre lors des consultations");
    Mesure m1 = new Mesure("20/05/2008", "08:00", 1.99, 0, 0, "");
    p1.add(m1);
    em.persist(p1);
    em.getTransaction().commit();
    		em.close();
    		emf.close();
    	}
     
    }
    jusque là rien d'anormal.
    ensuite, voici comment je définit mes classes:

    Patient:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    @Entity
    @Table(name="Patient")
    public class Patient implements Serializable{
    	
    	@Id
    	@Column
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	private int ref;
    	//@Column (name="ref", unique=true, nullable=false, length=4, insertable=false, updatable=false)
    	private String nom;
    	private String prenom;
    	private String adresse;
    	private int cp;
    	private String ville;
    	private String telephone;
    	private String email;
    	private String suivi_par;
    	private int type_diabete;
    	private String diagnostic;
    	
    	@OneToMany(mappedBy = "patient", cascade =CascadeType.ALL)
    	//@JoinColumn(name="patient_id")
    	private Collection<Mesure> mesures;
    	//ou Map ou Set peu importe	
    	
    	// constructor from super-class
    	public Patient() {
    		super();
    		this.init();
    		// TODO Auto-generated constructor stub
    	}
    	
    	//constructors using fields 
    	public Patient(String nom, String prenom, String adresse, int cp,
    			String ville, String telephone, String email, String suivi_par,
    			int type_diabete, String diagnostic) {
    		super();
    		this.nom = nom;
    		this.prenom = prenom;
    		this.adresse = adresse;
    		this.cp = cp;
    		this.ville = ville;
    		this.telephone = telephone;
    		this.email = email;
    		this.suivi_par = suivi_par;
    		this.type_diabete = type_diabete;
    		this.diagnostic = diagnostic;
    		this.init();
    	}
    
    	//getters and setters
    	...
    	public Collection<Mesure> getMesures() {
    		return mesures;
    	}
    
    	public void setMesures(Collection<Mesure> mesures) {
    		this.mesures = mesures;
    	}
    	
    
    	public void init(){
    		mesures= new ArrayList<Mesure>();
    	}	
    	public void add(Mesure nouvelle){
    		for (Mesure mesure: mesures)
    		 mesure.setPatient(this);
    
    		//mesures.add(nouvelle);
    	}
    	
    }
    et ma classe Mesure:
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    @Entity
    @Table(name="Mesure")
    public class Mesure {
     
    	@Id
    	@GeneratedValue(strategy=GenerationType.AUTO)
    	private int idMesure;
     
    	//@Column(name="mesure_id")
    	private String dat;
    	private String heure;
    	private double glycemie;
    	private double mixtard30;
    	private double axtrapide;
    	private String commentaire;
     
     
    	@ManyToOne
    	//@JoinColumn(name = "patient_id", referencedColumnName="ref")
    	private Patient patient;
     
     
    	//constructor from super-class
    	public Mesure() {
    		super();
    		// TODO Auto-generated constructor stub
    	}
     
    	//constructors using fields
    	public Mesure(String dat, String heure, double glycemie, double mixtard30, double axtrapide, String commentaire) {
    		super();
    		//this.idMesure = idMesure;
    		this.dat = dat;
    		this.heure = heure;
    		this.glycemie = glycemie;
    		this.mixtard30 = mixtard30;
    		this.axtrapide=axtrapide;
    		this.commentaire=commentaire;
     
    	}
     
    	//getters and setters
    	public int getIdMesure() {
    		return idMesure;
    	}
    	public String getDat() {
    		return dat;
    	}
    	public void setDat(String dat) {
    		this.dat = dat;
    	}
    	public String getHeure() {
    		return heure;
    	}
    	public void setHeure(String heure) {
    		this.heure = heure;
    	}
     
    	...
     
    	public Patient getPatient() {
    		return patient;
    	}
     
    	public void setPatient(Patient patient) {
    		this.patient = patient;
    	}
     
    }
    Donc avec ceci, normalement, je peut voir l'enregistrement Mesure dans ma table attaché par une étrangère ici patient_id contenant le numéro du patient dans mesure.
    Or, il se trouve que l'enregistrement de patient est contenu dans la base tandis que celui de ca mesure rien, c'est vide.
    Quelqu'un saurait-il me guider, svp?

    merciiiii

  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
    je comprends pas ce script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public void add(Mesure nouvelle){
    		for (Mesure mesure: mesures)
    		 mesure.setPatient(this);
     
    		//mesures.add(nouvelle);
    	}
    pour moi la derniere ligne en commentaire suffit. je pars du fait qu'on a OneToMany, donc je pige pas ta boucle

  3. #3
    Membre éclairé Avatar de mouss4rs
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 884
    Par défaut
    oui, alors en faite c'est valable pour un ManyToOne donc rien a faire ici.
    pb résolu!

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

Discussions similaires

  1. [MySQL] Enregistrer les valeurs d'un select multiple dans une table mysql
    Par barale61 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 10/04/2015, 14h58
  2. [WD10] Afficher les informations de chaque code à partir d'une table
    Par kadjane01 dans le forum WinDev
    Réponses: 1
    Dernier message: 22/03/2013, 13h32
  3. [MySQL] choix d'une table sql par une liste déroulante
    Par Tiny Buster dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/07/2008, 22h26
  4. Réponses: 4
    Dernier message: 24/07/2007, 12h12
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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