nio-8080-exe c -7] ohengine.jdb c .spi.SqlExceptionHelper: столбец category_id не может быть пустым - PullRequest
0 голосов
/ 08 апреля 2020

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);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...