OrderProduct.java
package cz.vsb.crm.model;
import jakarta.persistence.Column;
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;
import java.math.BigDecimal;
@Getter
@Setter
@Entity
@Table(name = "order_products",
uniqueConstraints = @UniqueConstraint(columnNames = {"order_id", "product_id"}),
indexes = {
@Index(name = "idx_op_order", columnList = "order_id"),
@Index(name = "idx_op_product", columnList = "product_id")
})
public class OrderProduct extends BaseEntity {
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id", nullable = false)
private Order order;
@NotNull
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "product_id", nullable = false)
private Product product;
@NotNull
@Min(1)
private Integer quantity;
@Column(name = "unit_price")
private BigDecimal unitPrice;
private BigDecimal subtotal;
}