Bonjour à tous,

Je réalise une application, où il y a une messagerie basique entre les utilisateurs. Quand je réalise ma requete PostMan pour créer un nouveau message il me met cela comme erreur :

"not-null property references a null or transient value : fr.dawan.enrechercheactive.entitie.Utilisateur.email; nested exception is org.hibernate.PropertyValueException: not-null property references a null or transient value : fr.dawan.enrechercheactive.entitie.Utilisateur.email",


Je vous mets la classe Message :
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
@Entity
public class Message implements Serializable {
 
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;
    @Column(nullable = false)
    private String sujet;
 
    @Column(nullable = false)
    private String contenu;
 
 
    private LocalDateTime dateHeure;
 
    private boolean estLu;
 
    @Enumerated(EnumType.STRING)
    private StatutEnvoi statutEnvoi;
 
    @ManyToOne(cascade = CascadeType.ALL)
    private Utilisateur expediteur;
 
 
    @ManyToOne(cascade = CascadeType.ALL)
    private Utilisateur destinataire;
 
    @Version
    private int version;

La classe Utilisateur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
	@OneToMany(mappedBy = "expediteur")
	private Set<Message> messages;
 
	@OneToMany(mappedBy = "destinataire")
	private Set<Message> recuMessage;

La classe MessageDTO :
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
public class MessageDto implements Serializable {
 
 
    private long id;
    private String sujet;
    private String contenu;
    private LocalDateTime dateHeure;
    private boolean estLu;
    private StatutEnvoi statutEnvoi;
 
    private int version;
 
    private long expediteurId;
 
    private long destinataireId;

La classe MessageService :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  @Override
    public MessageDto nouveauMessage (long id, MessageDto messageDto) throws Exception {
        Optional<Utilisateur>utilisateurExpediteur = utilisateurRepository.findById(id);
 
        Message nouvMessage = DtoConvertisseur.convert(messageDto, Message.class);
        nouvMessage.setContenu(nouvMessage.getContenu());
        nouvMessage.setSujet(nouvMessage.getSujet());
        nouvMessage.setDateHeure(LocalDateTime.now());
 
 
 
        messageRepository.save(nouvMessage);
        MessageDto messageDto1 = DtoConvertisseur.convert(nouvMessage, MessageDto.class);
        return messageDto1;

Et le controller Message :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 @PostMapping(value = "/{uid}/nouveau-message", consumes = "application/json", produces = "application/json")
    public ResponseEntity<MessageDto> nouveauMessage(@PathVariable("uid") long uid, @RequestBody MessageDto mDto) throws Exception{
        MessageDto message = messageServiceImpl.nouveauMessage(uid, mDto);
        return ResponseEntity.status(HttpStatus.CREATED).body(message);
    }