October 21, 2024
Chicago 12, Melborne City, USA
java

Why one to many data not go to backend?


I currently creating supplier form that we can add supplier and assign him to different brand and categories.that mean supplier related with one to many relation with supplier_has_brand_category. but i face this issue. frontend supplier obj pass correctly without any other issue. but backend supplier_has_brand_category is null.

enter image description here

Supplier Entity

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.*;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;

@Entity
@Table(name = "supplier")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SupplierEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",unique = true)
    private int id;

    @Column(name = "supplierid",unique = true)
    @NotNull
    private String supplierid;
     
    @Column(name = "name")
    @NotNull
    private String name;

    @Column(name = "address")
    private String Address;

    @Column(name = "phone")
    @NotNull
    private String phone;

    @Column(name = "email")
    @NotNull
    private String email;
    
    @Column(name = "agentname")
    @NotNull
    private String agentname;
    
    @Column(name = "agentphone")
    @NotNull
    private String agentphone;

    
    @Column(name = "agentemail")
    @NotNull
    private String agentemail;

    @Column(name = "branch")
    @NotNull
    private String branch;

    @Column(name = "accountname")
    @NotNull
    private String accountname;

    @Column(name = "accountno")
    @NotNull
    private String accountno;

    @Column(name="addeddate")
    @NotNull
    private LocalDateTime addeddate;

    @Column(name="modifydate")
    private LocalDateTime modifydate;

    @Column(name="deletedate")
    private LocalDateTime deletedate;

    
    @Column(name = "addeduser")
    @NotNull
    private int addeduser;

    @Column(name = "modifyuser")
    private int modifyuser;
    
    @Column(name = "deleteuser")
    private int deleteuser;

    
    @ManyToOne
    @JoinColumn(name="bankname_id",referencedColumnName = "id")
    private BankNameEntity bankname_id;

    @ManyToOne
    @JoinColumn(name="supplierstatus_id",referencedColumnName = "id")
    private SupplierStatusEntity supplierstatus_id;
    
    @OneToMany(mappedBy = "supplier_id")
    @JsonIgnore //block the recursion
    private List<SupplierHasBrandCategoryEntity> supplier_has_brand_category;

}

SupplierHasBrandCategoryEntity

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;


@Entity
@Table(name = "supplier_has_brand_category")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SupplierHasBrandCategoryEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id",unique = true)
    private int id;

    @ManyToOne
    @JoinColumn(name="supplier_id",referencedColumnName = "id")
    private SupplierEntity supplier_id;

    @ManyToOne
    @JoinColumn(name="brand_id",referencedColumnName = "id")
    private BrandEntity brand_id;
    
    @ManyToOne
    @JoinColumn(name="category_id",referencedColumnName = "id")
    private CategoryEntity category_id;
}

supplierController POST Request

@PostMapping(value = "/supplier")
    public String addSupplierData(@RequestBody SupplierEntity supplier){
        //Authentication and Autherization
        Authentication authentication=SecurityContextHolder.getContext().getAuthentication();
        HashMap<String,Boolean> userPrivilage=privilageController.getPrivilageByUserModule(authentication.getName(),"SUPPLIER");
        if(!userPrivilage.get("insert")){
            return "Permission Denied! Save not Completed";
        }
        //check already existance
        SupplierEntity extSupplierEmail=daoSupplier.getByEmail(supplier.getEmail());
        if(extSupplierEmail!=null){
            return "Save not Completed : given Name - "+supplier.getEmail()+" Already Exist...!";
        }
        try {
            //set AutoGenarated Value
            String nextNumber=daoSupplier.getNextSupplierNumber();
            //if next employee number is not come then set manualy last number+1
            if(nextNumber==null){
                supplier.setSupplierid("SUP0001");
            }else{
                supplier.setSupplierid(nextNumber);
            }
            UserEntity addedUserData=daoUser.getByUsername(authentication.getName());
            supplier.setAddeduser(addedUserData.getId());
            supplier.setAddeddate(LocalDateTime.now());
            /* System.out.println("Supplier data: " + supplier); */
            for(SupplierHasBrandCategoryEntity supplierHasBrandCategory:supplier.getSupplier_has_brand_category()){
                supplierHasBrandCategory.setSupplier_id(supplier);
            }
            daoSupplier.save(supplier);
            return "OK";
        } catch (Exception e) {
            return "Save not Completed: "+e.getMessage();
        }
    }
}

when i was click the submit button, i console log the object.that object has the supplier_has_item_category. but in backend it is null.other supplier data print normally. can you solve this issue to me.



You need to sign in to view this answers

Leave feedback about this

  • Quality
  • Price
  • Service

PROS

+
Add Field

CONS

+
Add Field
Choose Image
Choose Video