category_id не может быть нулевым! когда я пытаюсь добавить новую статью с почтальоном, она не работает. java
@Entity
public class Produit {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idProduit;
@NotBlank(message = "produit reference is required")
@Column(updatable = false , unique = true)
private String ref;
@NotBlank(message = "produit name is required")
private String nom;
@NotNull(message = "produit prix is required")
private float prixUnitaireHT;
@NotNull(message = "produit prix is required")
private float tauxTva;
@NotNull(message = "produit prix is required")
private float prixUnitaireTTC;
@NotBlank(message = "produit description is required")
private String designation;
@JsonFormat(pattern = "yyyy-mm-dd")
@Column(updatable = false)
private Date created_At;
@JsonFormat(pattern = "yyyy-mm-dd")
private Date updated_At;
//Many to one with category
@ManyToOne
@JoinColumn(name="category_id",nullable = false)
private Category category;
//One to Many with Ligne commande de fournisseur
@OneToMany(cascade = CascadeType.ALL,mappedBy = "produit")
@JsonIgnore
private List<LigneCdeFournisseur> ligneCdeFournisseurs = new ArrayList<>();
[this when i try to add new article with postman][1]
//Many to one with user
@ManyToOne
@JoinColumn
@JsonIgnore
private User user ;
public Produit() {}
public Long getIdProduit() {
return idProduit;
}
public void setIdProduit(Long idProduit) {
this.idProduit = idProduit;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public float getPrixUnitaireHT() {
return prixUnitaireHT;
}
public void setPrixUnitaireHT(float prixUnitaireHT) {
this.prixUnitaireHT = prixUnitaireHT;
}
public float getTauxTva() {
return tauxTva;
}
public void setTauxTva(float tauxTva) {
this.tauxTva = tauxTva;
}
public float getPrixUnitaireTTC() {
return prixUnitaireTTC;
}
public void setPrixUnitaireTTC(float prixUnitaireTTC) {
this.prixUnitaireTTC = prixUnitaireTTC;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
public Category getCategory() {
return category;
}
public void setCategory(Category category) {
this.category = category;
}
public String getRef() {
return ref;
}
public void setRef(String ref) {
this.ref = ref;
}
public List<LigneCdeFournisseur> getLigneCdeFournisseurs() {
return ligneCdeFournisseurs;
}
public void setLigneCdeFournisseurs(List<LigneCdeFournisseur> ligneCdeFournisseurs) {
this.ligneCdeFournisseurs = ligneCdeFournisseurs;
}
public Date getCreated_At() {
return created_At;
}
public void setCreated_At(Date created_At) {
this.created_At = created_At;
}
public Date getUpdated_At() {
return updated_At;
}
public void setUpdated_At(Date updated_At) {
this.updated_At = updated_At;
}
@PrePersist
protected void onCreate() {
this.created_At=new Date();
}
@PreUpdate
protected void onUpdate() {
this.updated_At=new Date();
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
категория класса. java
@Entity
public class Category {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idCategory;
@NotBlank(message ="Category nom is required")
private String nom;
private String designation;
@JsonFormat(pattern = "yyyy-mm-dd")
private Date created_At;
@JsonFormat(pattern = "yyyy-mm-dd")
private Date updated_At;
//One to Many with Produit
@OneToMany(cascade = CascadeType.ALL,mappedBy = "category")
@JsonIgnore
private List<Produit> produits = new ArrayList<>();
public Category() {
}
public Long getIdCategory() {
return idCategory;
}
public void setIdCategory(Long idCategory) {
this.idCategory = idCategory;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getDesignation() {
return designation;
}
public void setDesignation(String designation) {
this.designation = designation;
}
public List<Produit> getProduits() {
return produits;
}
public void setProduits(List<Produit> produits) {
this.produits = produits;
}
public Date getCreated_At() {
return created_At;
}
public void setCreated_At(Date created_At) {
this.created_At = created_At;
}
public Date getUpdated_At() {
return updated_At;
}
public void setUpdated_At(Date updated_At) {
this.updated_At = updated_At;
}
@PrePersist
protected void onCreate(){
this.created_At = new Date();
}
@PreUpdate
protected void onUpdate(){
this.updated_At = new Date();
}
}
produitservice. java
я не знаю, почему category_id не принимает значение, я пытаюсь добавить category_id в параметре функции saveORupdateProduit, но это не работает либо
@Service
public class ProduitService {
@Autowired
private ProduitRepository produitRepository;
@Autowired
private UserRepository userRepository;
@Autowired
private CategoryRepository categoryRepository;
public Produit saveOrUpdateProduit(Produit produit, String username){
try{
User user = userRepository.findByUsername(username);
produit.setUser(user);
produit.setCategory(produit.getCategory());
produit.setRef(produit.getRef().toUpperCase());
return produitRepository.save(produit);
}catch (Exception e){
throw new ProduitRefException("Produit Reference '"+produit.getRef().toUpperCase()+"' is already exists");
}
}
produitController . java
@RestController
@RequestMapping("/api/produit")
@CrossOrigin
public class ProduitController {
@Autowired
private ProduitService produitService;
@Autowired
private MapValidationErrorService mapValidationErrorService;
@PostMapping("")
public ResponseEntity<?> createNewProduit(@Valid @RequestBody Produit produit, BindingResult result, Principal principal){
ResponseEntity<?> errorMap = mapValidationErrorService.MapValidationService(result);
if (errorMap!=null) return errorMap;
Produit produit1 = produitService.saveOrUpdateProduit(produit,principal.getName());
return new ResponseEntity<Produit>(produit1, HttpStatus.CREATED);
}