Bonjour à tous,
J'ai un petit soucis que je vous expose mon problème en espèrant pouvoir trouver une solution avec votre aide!

Ce que je souhaite:

J'aimerais que la valeur de "site_id" de mon formulaire soit bien ajouté en db dans la table "numberplate" .

Ce que j'obtiens:

Un enregistrement en db qui ne contient pas "site_id" dans la table "numberplate".

Ma partie html du formulaire (select)

    <select class="custom-select" formControlName="site_id">
      <option [value]="null" selected disabled>Select a site</option>
      <option *ngFor="let site of sitesList" [value]="site.site_id">{{site.name}} </option>
    </select>

Les valeurs obtenues dans la console lors du submit:

    Form value : 
    {numberplate_id: null, site_id: '4e9e2710-0c06-45f1-909e-36299f1b4780', num_plate: '1-HBO-999', dop: '2022-07-20', active: true}
    active: true
    dop: "2022-07-20"
    num_plate: "1-HBO-999"
    numberplate_id: null
    site_id: "4e9e2710-0c06-45f1-909e-36299f1b4780"

Frontend (numberplate_create.components.ts)

    export class NumberplateCreateComponent implements OnInit {

      errorMsg: string = '';
      successMsg: string = '';
      getParamId = this.activatedRoute.snapshot.paramMap.get('id');
      sitesList: Site[] = [];
      formGroup!: FormGroup;

      constructor(private apiService: ApiService, private activatedRoute: ActivatedRoute) {
      }

      ngOnInit(): void {
        this.getSitesList();
        this.initForm();
      }

      private initForm(): void {
        this.formGroup = new FormGroup({
          'site_id': new FormControl(),
          'num_plate': new FormControl('', Validators.required),
          'dop': new FormControl(''),
          'active': new FormControl(true)
        });

      }

      create(): void {
        if (this.formGroup.valid) {
          const payload: NumberplateCreatePayload = this.formGroup.value;
          console.log(payload)
          this.apiService.createNumberplate(payload).subscribe((response: ApiResponse) => {
            if (response.result) {
              this.formGroup.reset();
              this.successMsg = response.code;
            }
          })
        } else {
          this.errorMsg = 'All fields are required';
        }
      }

      getSitesList() {
        this.apiService.getAllSite().subscribe((response: ApiResponse) => {
          this.sitesList = response.data;
          if (this.sitesList == null) {
            this.errorMsg = response.code;
          }
        })
      }

    }

Frontend (api.service.ts)

      createNumberplate(data: any): Observable<ApiResponse> {
        return this.http.post(`${this.baseUrl}/numberplate/create`, data)
          .pipe(
            map(response => response as ApiResponse)
          );
      }

Backend (NumberplateCreatePayload.java)

    public class NumberplateCreatePayload {
        private String num_plate;
        private Date dop;
        private Boolean active;
        private Site site;
    }

Backend (Numberplate.java)

    public class Numberplate {
        @Id
        @GeneratedValue(generator = "uuid2")
        @GenericGenerator(name = "uuid2", strategy = "uuid2")
        @Column(columnDefinition = "BINARY(16)")
        private UUID numberplate_id;
        private String num_plate;

        @DateTimeFormat(pattern = "dd/MM/yyyy")
        private Date dop;
        private Boolean active;

        @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE})
        @JoinColumn(name = "site_id")
        private Site site;
    }

Lors de la création via Postman je n'ai aucune erreur, l'enregistrement est bien là en entier.

Merci pour votre aide!

Aucune réponse