작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
1.3K
·
수정됨
답변 1
0
안녕하세요, 화이팅님!! 질문 올려주셔서 감사합니다!! 😊
현상 : ddl-auto를 create-drop으로 설정하면 책 등록 기능이 잘 동작한다. (다른 옵션 ex. none 이면 책 등록 기능이 동작하지 않는다) 하지만 서버를 다시 시작하면 테이블이 사라진다.
네네 맞습니다! 말씀해주신 것처럼 ddl-auto를 create-drop으로 하게 되면,
create-drop 옵션 자체가
서버가 시작될 때 테이블을 새로 만들고
서버가 종료될 때 테이블을 제거하는
원리로 동작해서, 서버를 끄시게 되면 테이블도 같이 사라지게 됩니다!!
이럴 때는 다음과 같은 방법으로 해결할 수 있습니다.
ddl-auto를 none으로 한다
아마 이렇게 하시면 에러가 나셨을 거에요! 그 에러의 원인은 서버가 데이터를 저장하려고 했는데, DB에 테이블에 없어서 그렇습니다! 따라서 테이블을 직접 만들어 주어야 합니다.
book 테이블을 DB에 만들어준다.
아마 user 테이블도 없으실테니 함께 만들어주시면 좋을 것 같아요!
create table user(
id bigint auto_increment,
name varchar(25),
age int,
primary key (id)
);
create table book(
id bigint auto_increment,
name varchar(255),
primary key (id)
);
1번과 2번을 모두 잘 하시면 에러 없이 기능이 동작하고, 서버를 종료했다가 다시 시작하더라도 데이터가 남아 있을겁니다!!!
꼭 해결되셨으면 좋겠습니다! 또 안되시는 부분 있으시면 편하게 질문 올려주세요~~ 감사합니다!! 🙏🙏
빠르게 답변 남겨주셔서 감사드립니다!!!
확인해보니 library.hibernate_sequence
테이블이 없다고 나오는데요!! 이 친구는 저희가 테이블의 PK 전략을 다르게 적용해주었을 때 사용되는 친구입니다. 즉, private Long id = null;
위에 어노테이션이 잘 달려 있는지 확인해보면 될 것 같습니다!!
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id = null;
JPA Entity 객체에 위의 어노테이션이 잘 붙어 있어야 합니다 ㅎㅎㅎㅎ (startegy
까지 동일해야 해요!!)
즉, 30강을 기준으로 User
객체와 Book
객체에 있는 id
에 위 어노테이션이 잘 붙어 있어야 합니다!
2023-03-06 21:51:18.266 ERROR 14340 --- [nio-8080-exec-2] o.hibernate.id.enhanced.TableStructure : could not read a hi value
2023-03-06 21:51:18.267 WARN 14340 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1146, SQLState: 42S02
2023-03-06 21:51:18.267 ERROR 14340 --- [nio-8080-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : Table 'library.hibernate_sequence' doesn't exist
2023-03-06 21:51:18.289 ERROR 14340 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessResourceUsageException: error performing isolated work; SQL [n/a]; nested exception is org.hibernate.exception.SQLGrammarException: error performing isolated work] with root cause
선생님 테이블 user, book 모두 있는데 에러가 이렇게 뜹니다. 어떻게 해야 할까요...??