bonsoir tout le monde;
j'ai un probleme avec l 'entité; j'ai deux table relationnelle:

1)la premiere table(chauffeur):


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
@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 : 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
@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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?