How to create a new Entity Type
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@SQLDelete(sql = "UPDATE manufacturer SET is_deleted = true WHERE id = ?", check = ResultCheckStyle.COUNT)
@Where(clause = "is_deleted is null or is_deleted <> true")
public class Manufacturer extends Base {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
private String type;
private Boolean accreditedByAgency;
private VendorType vendorType;
private String agencyName;
private String licenseNumber;
private Double totalScore;
@Column(name = "is_raw_materials_procured", columnDefinition = "tinyint(1) default 0")
private Boolean isRawMaterialsProcured = false;
private String externalManufacturerId;
// One-to-Many relationship with ManufacturerDoc
@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.ALL, orphanRemoval = true)
@ToString.Exclude
private Set<ManufacturerDoc> manufacturerDocs = new HashSet<>();
// One-to-Many relationship with ManufacturerCategory
@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.ALL, orphanRemoval = true)
@ToString.Exclude
private Set<ManufacturerCategory> manufacturerCategories = new HashSet<>();
// One-to-One relationship with Address
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_id", referencedColumnName = "id")
private Address address;
private Boolean licenseStatus;
@JsonIgnore
@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.ALL, orphanRemoval = true)
@ToString.Exclude
private Set<User> users = new HashSet<>();
// Many-to-Many relationships with other manufacturers (source/target mappings)
@ManyToMany(cascade = CascadeType.DETACH)
@JoinTable(name = "Manufacturer_source_mapping",
joinColumns = {@JoinColumn(name = "source_manufacturer_id")},
inverseJoinColumns = {@JoinColumn(name = "target_manufacturer_id")}
)
private Set<Manufacturer> targetManufacturers;
@ManyToMany(cascade = CascadeType.DETACH)
@JoinTable(name = "material_manufacturer_mapping",
joinColumns = {@JoinColumn(name = "target_manufacturer_id")},
inverseJoinColumns = {@JoinColumn(name = "source_manufacturer_id")}
)
private Set<Manufacturer> sourceManufacturers;
private ManufacturerType manufacturerType;
// One-to-Many relationship with ManufacturerCategoryAttributes
@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.ALL, orphanRemoval = true)
@OrderBy(value = "id DESC")
@ToString.Exclude
private Set<ManufacturerCategoryAttributes> manufacturerAttributes = new HashSet<>();
// One-to-Many relationship with ManufacturerProperty
@OneToMany(mappedBy = "manufacturer", cascade = CascadeType.ALL, orphanRemoval = true)
@ToString.Exclude
@OrderBy(value = "id desc")
private Set<ManufacturerProperty> manufacturerProperties = new HashSet<>();
public Manufacturer(Long id) {
this.id = id;
}
}Last updated