get the ConstraintViolationException while persisting. The error message provided below:
jakarta.validation.ConstraintViolationException: Validation failed for classes [com.Shop.Bird.Models.Product] during persist time for groups [jakarta.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage='ne doit pas ĂȘtre nul', propertyPath=imageURL, rootBeanClass=class com.Shop.Bird.Models.Product, messageTemplate='{jakarta.validation.constraints.NotNull.message}'} ] at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:148) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener.java:80) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at org.hibernate.action.internal.EntityInsertAction.preInsert(EntityInsertAction.java:211) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:96) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:612) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:483) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at java.base/java.util.LinkedHashMap.forEach(LinkedHashMap.java:721) ~[na:na] at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:480) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:329) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final] at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39) ~[hibernate-core-6.1.7.Final.jar:6.1.7.Final]
My Conttroller:
package com.Shop.Bird.web;
import com.Shop.Bird.DTOS.ProductDTO;
import com.Shop.Bird.service.Productservice;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/products")
@AllArgsConstructor
@Slf4j
public class ProductAPI {
Productservice productservice;
@PostMapping("/create")
public String Addproduct( @RequestBody ProductDTO productDTO){
this.productservice.Addproduct(productDTO);
return "Success ";
}
@GetMapping("/liste")
public List<ProductDTO> Getproducts(){
return this.productservice.GetAllproduct();
}
@DeleteMapping("/delete/{idproduct}")
public String Deleteproducts(@PathVariable Long idproduct){
this.productservice.Deleteproduct(idproduct);
return "Success ";
}
@PostMapping("/update/{idproduct}")
public String Updateproducts(@PathVariable Long idproduct, @RequestBody ProductDTO productDTO){
productDTO.setId(idproduct);
this.productservice.Updateproduct(productDTO);
return "Success ";
}
}
My Product entity
package com.Shop.Bird.Models;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Entity
@Data
@AllArgsConstructor
@NoArgsConstructor
@Table(name = "Products")
public class Product {
@Id
@GeneratedValue
private Long id;
private @NotNull String name;
private @NotNull String imageURL;
private @NotNull double price;
private @NotNull String description;
@ManyToOne
@JoinColumn(name="category_id")
Categorie categorie ;
}
My Deppandencies
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
<version>2.1.214</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>