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 :
jusque là rien d'anormal.
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(); } }
ensuite, voici comment je définit mes classes:
Patient:
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
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); } }
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.
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; } }
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
Partager