TroubleShooting 10

Cannot resolve symbol 'TimeUnit' import java.util.concurrent.TimeUnit;

신규 프로젝트를 진행하던 중, Redis에 RefreshToken의 수명을 저장하기 위해 TimeUnit을 사용하려 했지만,TimeUnit을 import 하지 못하는 에러가 발생했다.  timeunit의 class를 확인했다. 확인해 보니 상단에 수상한 문구가 적혀있었다.   저게 문제이지 않을까 싶어서 찾아보니, 66.0은 JDK 12버전 이상인 경우라는 뜻이었다.에러의 문제가 아니라 아쉽긴 했지만, 혹시나 JDK가 12 이하 버전이지 않을까 싶어 gradle을 조회했다.  버전에는 문제가 없었다. IntelliJ의 문제일수도 있겠다 생각하여 최신버전으로 다시 설치했다.   그래도 에러가 해결되지 않았다.이후, 여러 방법을 시도해본 결과, IntelliJ의 Cache를 지움으로써 해결할 수 있었다   ..

TroubleShooting 2024.06.17

JPA delete 후 insert가 안될 때(duplicate entry error)

문제 우선 user와 userImage가 OneToOne 관계를 가지고 있었다. user의 이미지 수정 요청 시, delete 후 insert 하기 위해 코드를 구현하는 와중에 duplicate entry error가 발생했다. unique 조건이 있는 데이터인데 삭제가 되지 않은 채로 추가를 하려 해서 발생하는 에러였다. 로그를 확인해도 delete코드가 먼저 적혀있음에도 불구하고 insert를 먼저 실행하는 것을 확인할 수 있다. 찾아보니 hibernate에서 동작하는 SQL 순서가 정해져 있었다. 시도 entityManager의 flush 메서드를 사용하여 손쉽게 영속성 컨텍스트의 변경내용(delete)을 DB에 동기화할 수 있었다. 하지만 하나의 요청을 위해 entityManager를 호출하는 것..

TroubleShooting 2023.09.03

[TroubleShooting] InvalidDefinitionException

com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `org.springframework.data.domain.PageImpl` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator) 따로 캡처는 못했지만 Redis로 Page를 Caching 할 때 발생한 에러다. `org.springframework.data.domain.PageImpl` 클래스에 기본 생성자가 없어서 발생한다고 했다. 어떻게 해야할 지 고민하다가 PageI..

TroubleShooting 2023.08.06

[Springboot] Error creating bean with name ' Controller '

'Error creating bean with name ... ' 스프링 컨테이너가 빈(Bean)을 생성하는 동안 문제가 발생하면 나타나는 에러이다. 1. 잘못된 애노테이션을 사용한 경우 2. 필요로 하는 의존성을 제대로 주입받지 못하는 경우 3. 클래스가 프로젝트에 존재하지 않거나 잘못된 패키지에 위치해 있는 경우 보통 위와같은 실수로 인해 발생한다. 나는 @RestController를 사용해야 하는데 @Controller를 사용하여 발생했다. (@Controller = @RestController에 @ResponseBody가 빠진 것) 이후에 비슷한 에러가 발생했다. Error creating bean with name 'entityManagerFactory' 이번에는 @Entity를 빼먹어서 에러가..

TroubleShooting 2023.07.07

[H2]Syntax error in SQL statement ... expected "identifier"; SQL statement:

내가 발생한 에러코드 Syntax error in SQL statement "\000d\000a create table [*]user (\000d\000a id bigint generated by default as identity,\000d\000a nickname varchar(255),\000d\000a password varchar(255),\000d\000a primary key (id)\000d\000a )"; expected "identifier"; SQL statement: 이것도 H2를 첫 사용할 때 발생한 에러였다. H2는 에러가 발생된 부분은 [*]로 표시하여 어디서 에러가 발생햇는지 알기 쉬웠다. 내가 에러가 발생한 부분은 create table user에서 user 부분이었다. 찾..

TroubleShooting 2023.07.07

[H2], [Springboot] JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password

평소에는 MySQL만 사용하다가 처음으로 H2를 사용해봤다. JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password 에러가 발생하여 찾아보니 스프링부트 2.4부터는 `spring.datasource.username=sa` 꼭 추가해주어야 했다. username을 root로 하여 진행하려고 `spring.datasource.username=root`로 작성하여 발생한 사소한 에러였다.

TroubleShooting 2023.07.07

[Springboot] 인증 및 인가를 이용한 게시판 CRUD

문제 Security를 이용해 게시판 만들기 1. 로그인 한 유저라면 게시글 작성, 자신의 게시글 수정 및 삭제 2. 로그인하지 않은 유저라도 읽기 가능 을 구현함에 있어 모든 글이 인증을 요구하게 되어 2번을 구현하는 데에 어려움을 겪었다 시도 조회 url에 search를 포함시킨 후 AuthFilter에 if문을 추가해 url에 search가 포함되어 있다면 인증을 필요 없이 진행시키도록 했다. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (Htt..

TroubleShooting 2023.07.03

[Springboot] 405 error

오늘은 Springboot로 게시판을 만들었다. 문제 처음에 비밀번호 인증을 구현하는 데에 있어서 405 에러가 발생했다. 405 에러는 client 가 server 가 요청하지 않는 method를 사용하였을 때 발생한다고 한다, 시도 Service code를 하나하나 주석처리 하면서 어디서 에러가 발생하는지 찾아봤다. 에러는 DB의 패스워드와 입력받은 패스워드를 비교하는 if문에서 원하지 않는 값을 반환한다는 걸 알게 됐다. 해결 같은 값을 넣어도 if문에서 DB의 패스워드와 입력값의 패스워드가 일치하지 않았었다. 왜그런지 찾아보니 입력값을 통째로 String으로 받아 json형식인 채로 들어와 DB의 값과 일치하지 않았다 (패스워드가 "123"이라면 입력받은 값은 "password":"123"이 들어..

TroubleShooting 2023.06.27

[Springboot] Execution failed for task ':test'

문제 Execution failed for task ':test' 테스트 실행에 실패했다고 에러가 발생했다. Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/Users/.../index.html * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. 시도1. index.html 확인 후 조치 ClassNotFoundException: PersistenceTe..

TroubleShooting 2023.06.26

[GitHub] ! [rejected] ScoreCheck -> ScoreCheck (fetch first) error: failed to push some refs to URL

오늘은 숫자야구를 페어 프로그래밍을 통해 구현했다. 첫 페어 프로그래밍이었다. 나와 페어였던 분도 미리 작성해 왔기에 간단하게 코드리뷰 진행 후, 내비게이터와 코더로 역할을 나눠 코드를 작성했다. 그 후, 각각 파트를 나눠 하나의 레포지토리에 add, commit, push를 하기로 했다. 초반에는 명령어 순서조차 몰라서 정신이 없었다. PR까지 완료했으나 브랜치 생성을 하지 않았다거나, 커밋을 메인 브랜치에서 하거나 등등 여러 실수가 있었다. 그러다가 어느정도 익숙해졌다 싶었을 즈음 처음 보는 에러가 발생했다. ! [rejected] ScoreCheck -> ScoreCheck (fetch first) error: failed to push some refs to hint: (e.g., 'git pul..

TroubleShooting 2023.06.13