Bonjour,
Désolée de vous déranger avec çà, surtout que je ne sais même pas si je poste mon topic au bon endroit
Donc, je souhaite faire une injection de données dans une tables (Jour.java), cette dernière ayant un clé étrangère provenant d'une autre table (Absence.java).
Jour.java
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116 package com.maison.enfant.gestion.horaire.entitybeans; // default package // Generated 27 mai 2012 14:00:13 by Hibernate Tools 3.4.0.CR1 import java.sql.Time; import java.util.Date; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; import javax.persistence.Temporal; import javax.persistence.TemporalType; /** * Jour generated by hbm2java */ @Entity @Table(name = "jour", catalog = "gestionhoraire") public class Jour implements java.io.Serializable { private Integer idJour; private Absence absence; private Semaine semaine; private String jour; private Time debutHoraire; private Time finHoraire; private String typeHoraire; public Jour() { } public Jour(Absence absence, Semaine semaine, String jour, Time debutHoraire, Time finHoraire, String typeHoraire) { this.absence = absence; this.semaine = semaine; this.jour = jour; this.debutHoraire = debutHoraire; this.finHoraire = finHoraire; this.typeHoraire = typeHoraire; } @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "idJour", unique = true, nullable = false) public Integer getIdJour() { return this.idJour; } public void setIdJour(Integer idJour) { this.idJour = idJour; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "idAbsence", nullable = false) public Absence getAbsence() { return this.absence; } public void setAbsence(Absence absence) { this.absence = absence; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "idSemaine", nullable = false) public Semaine getSemaine() { return this.semaine; } public void setSemaine(Semaine semaine) { this.semaine = semaine; } @Column(name = "jour", nullable = false, length = 50) public String getJour() { return this.jour; } public void setJour(String jour) { this.jour = jour; } @Column(name = "debutHoraire", nullable = false, length = 8) public Time getDebutHoraire() { return this.debutHoraire; } public void setDebutHoraire(Time debutHoraire) { this.debutHoraire = debutHoraire; } @Column(name = "finHoraire", nullable = false, length = 8) public Time getFinHoraire() { return this.finHoraire; } public void setFinHoraire(Time finHoraire) { this.finHoraire = finHoraire; } @Column(name = "typeHoraire", nullable = false, length = 45) public String getTypeHoraire() { return this.typeHoraire; } public void setTypeHoraire(String typeHoraire) { this.typeHoraire = typeHoraire; } }
Absence.java
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 package com.maison.enfant.gestion.horaire.entitybeans; // default package // Generated 13 mai 2012 11:46:48 by Hibernate Tools 3.4.0.CR1 import java.util.HashSet; import java.util.Set; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.FetchType; import javax.persistence.GeneratedValue; import static javax.persistence.GenerationType.IDENTITY; import javax.persistence.Id; import javax.persistence.OneToMany; import javax.persistence.Table; /** * Absence generated by hbm2java */ @Entity @Table(name = "absence", catalog = "gestionhoraire") public class Absence implements java.io.Serializable { private Integer idAbsence; private String nomAbsence; private String abrAbsence; private double nombreHeureArecup; private Set<Jour> jours = new HashSet<Jour>(0); public Absence() { } public Absence(String nomAbsence, String abrAbsence, double nombreHeureArecup) { this.nomAbsence = nomAbsence; this.abrAbsence = abrAbsence; this.nombreHeureArecup = nombreHeureArecup; } public Absence(String nomAbsence, String abrAbsence, double nombreHeureArecup, Set<Jour> jours) { this.nomAbsence = nomAbsence; this.abrAbsence = abrAbsence; this.nombreHeureArecup = nombreHeureArecup; this.jours = jours; } @Id @GeneratedValue(strategy = IDENTITY) @Column(name = "idAbsence", unique = true, nullable = false) public Integer getIdAbsence() { return this.idAbsence; } public void setIdAbsence(Integer idAbsence) { this.idAbsence = idAbsence; } @Column(name = "nomAbsence", nullable = false, length = 100) public String getNomAbsence() { return this.nomAbsence; } public void setNomAbsence(String nomAbsence) { this.nomAbsence = nomAbsence; } @Column(name = "abrAbsence", nullable = false, length = 45) public String getAbrAbsence() { return this.abrAbsence; } public void setAbrAbsence(String abrAbsence) { this.abrAbsence = abrAbsence; } @Column(name = "nombreHeureArecup", nullable = false, precision = 22, scale = 0) public double getNombreHeureArecup() { return this.nombreHeureArecup; } public void setNombreHeureArecup(double nombreHeureArecup) { this.nombreHeureArecup = nombreHeureArecup; } @OneToMany(fetch = FetchType.LAZY, mappedBy = "absence") public Set<Jour> getJours() { return this.jours; } public void setJours(Set<Jour> jours) { this.jours = jours; } }
Lorsque j'essaie d'insérer un jour dans ma table, j'ai ce message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Cannot add or update a child row: a foreign key constraint fails (`gestionhoraire`.`jour`, CONSTRAINT `FK_jour_2` FOREIGN KEY (`idAbsence`) REFERENCES `absence` (`idAbsence`) ON DELETE CASCADE ON UPDATE CASCADE) Method public java.lang.String org.hibernate.exception.NestableRuntimeException.getMessage(int) threw an exception when invoked on org.hibernate.exception.ConstraintViolationException: could not insert: [com.maison.enfant.gestion.horaire.entitybeans.Jour] The problematic instruction: ---------- ==> ${msg[0]} [on line 68, column 29 in org/apache/struts2/dispatcher/error.ftl]
Sachant que dans ma classe action pour insérer les jours j'ai :
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 //Gestion des horaires du matin if (horairePersonneDebutMatinValue != null && !"".equals(horairePersonneDebutMatinValue) && horairePersonneFinMatinValue != null && !"".equals(horairePersonneFinMatinValue)){ if (!"00:00".equals(horairePersonneDebutMatinValue)|| !"00:00".equals(horairePersonneFinMatinValue)){ horairePersonneDebutMatinValue = horairePersonneDebutMatinValue + ":00"; horairePersonneFinMatinValue = horairePersonneFinMatinValue + ":00"; System.out.println("horairePersonneDebutMatinValue : "+horairePersonneDebutMatinValue); System.out.println("horairePersonneFinMatinValue : "+horairePersonneFinMatinValue); Time startDateMatin = java.sql.Time.valueOf(horairePersonneDebutMatinValue); jourDto.setDebutHoraire(startDateMatin); Time endDateMatin = java.sql.Time.valueOf(horairePersonneFinMatinValue); jourDto.setFinHoraire(endDateMatin); jourDto.setAbsenceDTO(null); jourDto.setTypeHoraire("AM"); System.out.println("setDebutHoraire : "+jourDto.getDebutHoraire()); System.out.println("setFinHoraire : "+jourDto.getFinHoraire()); System.out.println("setAbsenceDTO : "+jourDto.getAbsenceDTO()); System.out.println("setTypeHoraire : "+jourDto.getTypeHoraire()); this.jourService.saveOrUpdateJour(jourDto); }else{ System.out.println("les horaires du matin sont nuls"); System.out.println("horairePersonneDebutMatinValue : "+horairePersonneDebutMatinValue); System.out.println("horairePersonneFinMatinValue : "+horairePersonneFinMatinValue); } }
Merci de votre aide ^^
Partager