probleme avec une clé etrangere
Salut a tous,
j'ai les 2 table suivantes:
parent=>
Code:
1 2 3 4 5
| CREATE TABLE parent
(
nom character varying NOT NULL,
CONSTRAINT parent_pkey PRIMARY KEY (nom)
) |
enfant=>
Code:
1 2 3 4 5 6 7 8 9
| CREATE TABLE enfant
(
"nomEnfant" character varying NOT NULL,
parent character varying,
CONSTRAINT enfant_pkey PRIMARY KEY ("nomEnfant"),
CONSTRAINT enfant_parent_fkey FOREIGN KEY (parent)
REFERENCES parent (nom) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
) |
l'insertion d'un parent se fait sans probleme mais je rencontre un probleme lors de l'insertion d'un enfant dans la base
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| public void ajoutEnfantParent(String nomEnfant, String nomParent) {
//entité parent
Parent p=new Parent(nomParent);
//entité enfant
Enfant e=new Enfant(nomEnfant);
e.setParent(p);
parentFacade.create(p);
enfantFacade.create(e);
} |
j'ai l'exception suivante
Code:
1 2 3 4
| L'élément du batch 0 insert into enfant (parent, nomEnfant) values (momo, toto) a été annulé. Appeler getNextException pour en connaître la cause.
SQL Error: 0, SQLState: 42703
ERROR: column "nomenfant" of relation "enfant" does not exist
Could not synchronize database state with session |
voila les entities
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
| /*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package entity;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
/**
*
* @author Hamza
*/
@Entity
@Table(name = "enfant")
@NamedQueries({@NamedQuery(name = "Enfant.findAll", query = "SELECT e FROM Enfant e"), @NamedQuery(name = "Enfant.findByNomEnfant", query = "SELECT e FROM Enfant e WHERE e.nomEnfant = :nomEnfant")})
public class Enfant implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "nomEnfant")
private String nomEnfant;
@JoinColumn(name = "parent", referencedColumnName = "nom")
@ManyToOne
private Parent parent;
public Enfant() {
}
public Enfant(String nomEnfant) {
this.nomEnfant = nomEnfant;
}
public String getNomEnfant() {
return nomEnfant;
}
public void setNomEnfant(String nomEnfant) {
this.nomEnfant = nomEnfant;
}
public Parent getParent() {
return parent;
}
public void setParent(Parent parent) {
this.parent = parent;
}
@Override
public int hashCode() {
int hash = 0;
hash += (nomEnfant != null ? nomEnfant.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Enfant)) {
return false;
}
Enfant other = (Enfant) object;
if ((this.nomEnfant == null && other.nomEnfant != null) || (this.nomEnfant != null && !this.nomEnfant.equals(other.nomEnfant))) {
return false;
}
return true;
}
@Override
public String toString() {
return "entity.Enfant[nomEnfant=" + nomEnfant + "]";
}
} |
Que faire ?
Merci d'avance.