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

Hibernate Java Discussion :

Problème avec les clés étrangères


Sujet :

Hibernate Java

  1. #1
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut 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

    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 ^^

  2. #2
    Membre habitué
    Femme Profil pro
    Inscrit en
    Mai 2012
    Messages
    360
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 360
    Points : 139
    Points
    139
    Par défaut
    Personne a la moindre idée d'où vient le problème ?

    Je pense que, comme l'indique le message, soucis vient de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    jourDto.setAbsenceDTO(null);
    Mais je ne vois pas pourquoi .... :/

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/07/2012, 13h27
  2. Réponses: 10
    Dernier message: 27/03/2011, 13h27
  3. Problème avec les clés étrangères
    Par PoichOU dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 06/11/2007, 09h46
  4. [EJB2.1 Entity] [CMP] [xdoclet] Problème avec les clés primaires
    Par shingo dans le forum Java EE
    Réponses: 1
    Dernier message: 10/02/2006, 16h41
  5. [CONCEPTION MCD] Problème avec les clés composées
    Par fabriceMerc dans le forum Schéma
    Réponses: 3
    Dernier message: 14/02/2005, 09h43

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