Spring Data JPA를 사용하여 Entity와 Servcie를 만들고 Junit5로 테스트를 만들어 실행하던 중 아래와 같은 오류를 얻었다.
Caused by: org.hibernate.MappingException:
property mapping has wrong number of columns:
sch.cqre.api.model.entity.PostEntity.likes type: object
나 같은 경우는 데이터베이스를 먼저 Mysql에서 생성한 후 IntelliJ를 이용하여 자바 Entity를 자동 생성했다.
@Data
@Entity
@Table(name = "Post", schema = "main")
public class PostEntity {
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Id
@Column(name = "post_id")
private Long postId;
@Basic
@Column(name = "author_id")
private Long authorId;
@Basic
@Column(name = "post_title")
private String postTitle;
@Basic
@Column(name = "post_content")
private String postContent;
@Basic
@Column(name = "views")
private Object views;
@Basic
@Column(name = "likes")
private Object likes;
@Basic
@Column(name = "thumbnail")
private String thumbnail;
@Basic
@Column(name = "created_at")
private Timestamp createdAt;
@Basic
@Column(name = "updated_at")
private Timestamp updatedAt;
위 코드가 그 내용인데 views
와 likes
컬럼을 보면 Object
로 정의되어 있었고 이는 Database와 매칭 할 수 없어 오류를 출력한 것이다.
Mysql 데이터베이스를 보면 int unsigned로 되어 있는데 이는 Java에서 int unsigned를 잘 지원하지 않아 Object로 임의 설정한 것 같다.
해당 자료형을 Object
→ int
형으로 변경하여 오류를 해결했다.