์ด์ฐ์ ์ฐ ํ๋ก ํธ๋ฅผ ๋ง๋ค๊ณ
๋ฐฑ์๋๋ฅผ ํ๋ ค๋๋ฐ,
์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค!
์ ๋ฐ์ํ ๊ฑธ๊น?
1. ์ค๋ฅ ์ดํผ๊ธฐ.
์ด๋ฐ! ๋ชป์๊ธด ์ค๋ฅ๊ฐ ๋ด๋ค.
Caused by: org.h2.jdbc.JdbcSQLFeatureNotSupportedException:
Feature not supported: "CHARACTER VARYING(255)"; SQL statement:
ํ์ฌ H2๋ก database๋ฅผ ๊ด๋ฆฌํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ h2์์ ์ํฌํธํ์ง ์๋ ํน์ ํ์ ์ด ์กด์ฌํ๋ค๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ ํน์ ํ์ ์ "CHARACTER VARYING(255)"๋ผ๊ณ ํ๋ค.

๊ทธ๋ ๋ค๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ก์ง๊ณผ ์ฐ๊ฒฐ๋ ํํธ๋ฅผ ์ดํด๋ด์ผ๊ฒ ๋ค.
2. ์ฝ๋ ์ดํผ๊ธฐ.

ํ์ฌ ํ๋ก์ ํธ ํ์ผ์ด๋ค. ํ๋์ฉ ์ดํด๋ณด๋ฉด RegisterRequest๋ ํ๋ก ํธ๋ก ๋ค์ด์จ ์์ฒญ์ ์ฐ๊ฒฐํ๋ ํด๋์ค๋ค. DB์๋ ๋ฌธ์ ๊ฐ ์์ด๋ณด์ธ๋ค. ๋ค์ ํ์ผ์ register ๋๋ ํ ๋ฆฌ ๋ฐ์ ์๋ Member ํด๋์ค๋ค.
@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private String name;
private String userId;
private String pwd;
private String tel;
private String birth;
private String email;
}
์ฌ๊ธฐ๋ฅผ ๋ณด๋ ๋ฌธ์ ๊ฐ ๋ฌด์์ธ์ง ์ด์ ์ผ ๋ณด์ธ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ id ํ๋๋ฅผ ๋ฃ๋๋ฐ, ๋ณดํต ๊ทธ ์ด์ ๊ฐ ๊ธฐ๋ณธํค์ ์ญํ ์ ์ํจ์ด๋ค. ์ฝ๊ฒ ์ค๋ช ํ๋ฉด ์ด๋ฆ, ์ฌ์ฉ์ ์์ด๋, ํจ์ค์๋, ์ ํ๋ฒํธ ๋ฑ ์ ๋ณด๊ฐ ๋์ผํ๊ฒ ๋ค์ด์๋ ๋ ์ ๋ณด๊ฐ ๋ค๋ฅธ ์ ๋ณด์์ ๊ตฌ๋ถํ๊ธฐ ์ํด id ํ๋๋ฅผ ๋ฃ๋ ๊ฒ์ด๋ค. ์ด๋ id๋ ๋ฌด์กฐ๊ฑด ๋ค๋ฅธ ๊ฐ์ผ๋ก ์ค์ง ํ๋๋ง ์กด์ฌํ๋ค.
์ฌ๊ธฐ ์ฝ๋์์ @Id๋ JPA์์ ์ด ํ๋๊ฐ ์ํฐํฐ์ ๊ธฐ๋ณธํค๋ผ๊ณ ๋ํ๋ธ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ @GeneratedValue๋ผ๋ ์ด๋ ธํ ์ด์ ์ DB์๊ฒ ์์์ ๊ฐ์ ์์ฑํ๋ ๊ธฐ๋ณธํค๋ฅผ ์ง์ ํ ํ ์๋ ์ฆ๊ฐ๋ฅผ ์ํค๋ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋๊น ์ด ์ฝ๋๋ Id ํ๋๋ฅผ ๊ธฐ๋ณธํค๋ก ์ง์ ํ๊ณ , @GeneratedValue๋ก id์ ๊ฐ์ด ์์์ ์ฆ๊ฐํ๋๋ก ํ๊ฒ์ด๋ค.
์ด์ ๋ฌธ์ ๊ฐ ๋ณด์ผ ๊ฒ์ด๋ค. Long Id ํ๋๋ฅผ ์ ์ธํ์ง ์์๋ค.
3. ํด๊ฒฐํ๊ธฐ.
@GeneratedValue์์ ์๋์ฆ๊ฐ๋ String ํ์ ์ ์ง์ํ์ง ์๋๋ค. ๊ทธ๋์ ์ค๋ฅ๊ฐ ๋ฌ๊ฑธ์๋ ์๊ณ , id๋ฅผ ๊ธฐ๋ณธํค๋ก ์ค์ ํ๋ ์ด๋ ธํ ์ด์ ๋๋ฌธ์ผ์๋ ์๊ณ ... ์๋ฌดํผ private Long id;๋ฅผ ์ถ๊ฐํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋ค.
@Entity
@Getter
@Setter
public class Member {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id; // ์ถ๊ฐํ๊ธฐ
private String name;
private String userId;
private String pwd;
private String tel;
private String birth;
private String email;
}