클래스 캐스트 에러가 발생했다. entity.save()를 했을 뿐인데 발생했다.
문제되는 클래스는 다음과 같다.
@Entity
@Table(name = "\"order\"")
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@SuperBuilder
public class OrderEntity extends BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(updatable = false, columnDefinition = "BIGINT UNSIGNED")
private Long iorder;
@JoinColumn(name = "iuser")
@ManyToOne
private UserEntity userEntity;
@JoinColumn(name = "ireserve")
@ManyToOne
private ReserveEntity reserveEntity;
@Column(nullable = false, length = 100)
private String address;
@Column(name = "address_detail", length = 100)
private String addressDetail;
@Column(name = "total_price", nullable = false, columnDefinition = "INT UNSIGNED", length = 10)
private Integer totalPrice;
@Column(name = "shipping_price", nullable = false, length = 10, columnDefinition = "INT UNSIGNED")
@ColumnDefault("3000")
private Integer shippingPrice;
@Column(name = "shipping_memo", length = 100)
private String shippingMemo;
@Column(name = "del_yn", columnDefinition = "TINYINT not null DEFAULT 1", length = 1)
private Integer delYn;
//KAKAO, CARD
@Column(nullable = false, length = 1)
@Enumerated(EnumType.STRING)
private PayType type;
@Column(columnDefinition = "TINYINT not null DEFAULT 0 CHECK(shipping in (0,1,2,3))", length = 1)
private Integer shipping;
}
살펴보면 Character에 해당하는 타입이 없다.
그래서 구글링을 하던 도중
다음과 같은 글을 발견했다.
내가 작성한 클래스의 컬럼
//KAKAO, CARD @Column(nullable = false, length = 1) @Enumerated(EnumType.STRING) private PayType type;
구조가 흡사해서 length값을 지웠더니 문제없이 작동했다.
아마 length가 1이라 char타입으로 읽는 것 같다.
참고 사이트 : https://github.com/spring-projects/spring-data-jpa/issues/2821