문제가 발생한 부분

Products 엔티티

@Entity
@Table(name = "PRODUCT")
@Getter
@NoArgsConstructor
public class Products {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String productName;

    @Embedded
    @Column(nullable = false)
    private Category category;

    @Column(nullable = false)
    private int price;

    @Column
    private int discountPrice;

    @Column(nullable = false)
    private int stock;

    @Column(nullable = false)
    @ColumnDefault("false")
    private boolean onSale;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "EVENT_ID")
    private Event event;
}

발생 오류

Untitled

문제가 발생한 원인

JPA를 통해서 INSERT 시 set 하지 않은 변수에 대해서는 Null로 INSERT가 되는데, 해당 컬럼의 속성이 Primitive Type으로 되어있기 때문에 오류가 발생했다.

자바의 Primitive Type (boolean, byte, short, int, long 등등) 은 null을 담을 수 없기 때문에 Reference Type 으로 수정해주면 해결된다!

수정된 코드

@Entity
@Table(name = "PRODUCT")
@Getter
@NoArgsConstructor
public class Products {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(nullable = false)
    private String productName;

    @Embedded
    @Column(nullable = false)
    private Category category;

    @Column(nullable = false)
    private Integer price;

    @Column
    private Integer discountPrice;

    @Column(nullable = false)
    private Integer stock;

    @Column(nullable = false)
    @ColumnDefault("false")
    private boolean onSale;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "EVENT_ID")
    private Event event;
}