Problème avec les clés étrangères
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 :oops:
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:
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:
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:
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:
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 ^^ :)