반응형
로그인 구현을 위해 해시함수를 구현하여 encrypt를 해주는 Salt 기능을 만들기 위해 테스트를 하던 중
[SQL] ERROR 1146 (42S02): Table doesn't exist 에러가 발생했다.
그 이유는 아래 Salt Entity가 존재하는데,
Salt 테이블이 만들어지지 않기 때문이다.
@Entity
@Getter @Setter
public class Salt {
@Id @GeneratedValue
private Long id;
@NotNull
private String salt;
public Salt() {}
public Salt(String salt) {
this.salt = salt;
}
}
참고로 이 Salt Entity는 Member Entity와 1:1 연관관계 매핑이 돼있는 상태이다.
@Entity
@Getter @Setter
@NoArgsConstructor
public class Member {
//...
@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name="salt_id")
private Salt salt;
//...
}
해결방법
물론 테이블 자체를 직접 만드는 방법도 있겠지만,
application.properties에서 spring.jpa.hibernate.ddl-auto=none을 spring.jpa.hibernate.ddl-auto=update로 바꿔주면 해결된다.
외래키로 연관관계 매핑을 해놓았기 때문에 drop table 또한 되지 않는다.
Salt 및 비밀번호 encoding은 아래 블로그 포스팅에서 확인할 수 있다.
예전에는 에러를 보면 공포에 떨어서 코딩을 중단하고 도망쳤는데,
요즘 에러를 보는 눈이 트여서 그런지 공포감이 좀 줄어들었다.
앞으로 개발도 백준만큼 열심히 해서 실력 늘리든지 해야겠다.
반응형
'JAVA > JAVA | Spring 학습기록' 카테고리의 다른 글
[TDD] Test 코드에서 Exception을 받고 싶을 때 (0) | 2021.09.22 |
---|---|
[Java] 자바 final의 역할과 싱글톤 패턴 (0) | 2021.09.22 |
[TDD] @Rollback을 쓰면 원래 DB의 데이터도 사라질까? (0) | 2021.08.27 |
[Spring] 스프링이 태어난 이유_서블릿, JSP로 만든 MVC의 한계 (0) | 2021.07.06 |
[Spring] lombok의 @Builder와 JpaRepository를 도입해보았다 (0) | 2021.05.17 |