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); }
Partager