@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;
}
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;
}