LeadProduct.java
package cz.vsb.crm.model;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.Index;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import jakarta.persistence.UniqueConstraint;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Entity
@Table(name = "lead_products",
uniqueConstraints = @UniqueConstraint(columnNames = {"lead_id", "product_id"}),
indexes = {
@Index(name = "idx_lp_lead", columnList = "lead_id"),
@Index(name = "idx_lp_product", columnList = "product_id")
})
public class LeadProduct extends BaseEntity {
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "lead_id", nullable = false)
private Lead lead;
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id", nullable = false)
private Product product;
@NotNull
@Min(1)
private Integer quantity;
}