Valeur de champ étrangère est null
bonsoir tout le monde;
j'ai un probleme avec l 'entité; j'ai deux table relationnelle:
1)la premiere table(chauffeur):
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
| @Entity
@Table(name = "chauffeur")
@NamedQueries({
@NamedQuery(name = "Chauffeur.findAll", query = "SELECT c FROM Chauffeur c"),
@NamedQuery(name = "Chauffeur.findByNumSom", query = "SELECT c FROM Chauffeur c WHERE c.numSom = :numSom"),
@NamedQuery(name = "Chauffeur.findByNom", query = "SELECT c FROM Chauffeur c WHERE c.nom = :nom"),
@NamedQuery(name = "Chauffeur.findByPrenom", query = "SELECT c FROM Chauffeur c WHERE c.prenom = :prenom"),
@NamedQuery(name = "Chauffeur.findByDateNaissance", query = "SELECT c FROM Chauffeur c WHERE c.dateNaissance = :dateNaissance"),
@NamedQuery(name = "Chauffeur.findByLieuNaissance", query = "SELECT c FROM Chauffeur c WHERE c.lieuNaissance = :lieuNaissance"),
@NamedQuery(name = "Chauffeur.findByAdresse", query = "SELECT c FROM Chauffeur c WHERE c.adresse = :adresse"),
@NamedQuery(name = "Chauffeur.findByTele", query = "SELECT c FROM Chauffeur c WHERE c.tele = :tele"),
@NamedQuery(name = "Chauffeur.findByEmail", query = "SELECT c FROM Chauffeur c WHERE c.email = :email")})
public class Chauffeur implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "NUM_SOM")
private Integer numSom;
@Column(name = "NOM")
private String nom;
@Column(name = "PRENOM")
private String prenom;
@Column(name = "DATE_NAISSANCE")
@Temporal(TemporalType.TIMESTAMP)
private Date dateNaissance;
@Column(name = "LIEU_NAISSANCE")
private String lieuNaissance;
@Column(name = "ADRESSE")
private String adresse;
@Column(name = "TELE")
private String tele;
@Column(name = "EMAIL")
private String email;
@OneToMany(mappedBy = "chauffeur")
private List<Reservation> reservationList;
public Chauffeur() {
}
////////: |
2) la deuxieme table(reservation):
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
| @Entity
@Table(name = "reservation")
@NamedQueries({
@NamedQuery(name = "Reservation.findAll", query = "SELECT r FROM Reservation r"),
@NamedQuery(name = "Reservation.findByIdResv", query = "SELECT r FROM Reservation r WHERE r.idResv = :idResv"),
@NamedQuery(name = "Reservation.findByDateResv", query = "SELECT r FROM Reservation r WHERE r.dateResv = :dateResv"),
@NamedQuery(name = "Reservation.findByDestination", query = "SELECT r FROM Reservation r WHERE r.destination = :destination"),
@NamedQuery(name = "Reservation.findByObjetResv", query = "SELECT r FROM Reservation r WHERE r.objetResv = :objetResv"),
@NamedQuery(name = "Reservation.findByDateDebut", query = "SELECT r FROM Reservation r WHERE r.dateDebut = :dateDebut"),
@NamedQuery(name = "Reservation.findByDateFin", query = "SELECT r FROM Reservation r WHERE r.dateFin = :dateFin"),
@NamedQuery(name = "Reservation.findByConfirmation", query = "SELECT r FROM Reservation r WHERE r.confirmation = :confirmation")})
public class Reservation implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "ID_RESV")
private Integer idResv;
@Column(name = "DateResv")
@Temporal(TemporalType.TIMESTAMP)
private Date dateResv;
@Column(name = "destination")
private String destination;
@Column(name = "objetResv")
private String objetResv;
@Column(name = "DATE_DEBUT")
@Temporal(TemporalType.TIMESTAMP)
private Date dateDebut;
@Column(name = "DATE_FIN")
@Temporal(TemporalType.TIMESTAMP)
private Date dateFin;
@Column(name = "CONFIRMATION")
private String confirmation;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "reservation")
private List<Bon> bonList;
@JoinColumn(name = "NumSOM", referencedColumnName = "NUM_SOM")
@ManyToOne
private Chauffeur chauffeur;
public Reservation() {
}
//// |
3) voilà le code d'insertion dans la table reservation:
Code:
1 2 3 4 5 6 7
| @Override
public Reservation createReservation(Reservation reservation) throws Exception {
em.persist(reservation);
return reservation;
} |
je veux insérer des données dans la table reservation, avec une valeur null dans le champ étrangère (chauffeur).
mais une erreur s'affiche dit:
Code:
Caused by: java.lang.IllegalStateException: During synchronization a new object was found through a relationship that was not marked cascade PERSIST: JPA.Chauffeur[numSom=0].
svp; comment résoudre ce problème?