본문 바로가기

백엔드/Spring131

[JPA] COALESCE - @Query에서 sum()사용시 Null 을 0으로 @Query에서 sum 을 사용하는데 결과가 Null이 나오는 데이터를 0으로 반환하고 싶다면 COALESCE 을 사용해준다. COALESCE 는 null이 아니면 첫번째 값, null 이면 두번째 값을 반환한다. @Query("select COALESCE(sum(c.price),0) from Calculate c where c.companyId = :companyId") 2023. 5. 19.
[Spring Error] nested exception is java.lang.IllegalArgumentException: Could not locate appropriate constructor on class jpql 을 사용할때 다음과 같은 에러가 나왔다. nested exception is java.lang.IllegalArgumentException: Could not locate appropriate constructor on class 원인으로는 column의 순서가 맞지 않거나 type이 맞지 않아서 생기는 오류이다. 2023. 4. 21.
[spring] api 호출 시 response, request 값 로그에 출력하기 - AOP 활용한 logging 출력 api 를 호출할 때마다 response, request 값의 로그를 log.info() 를 통해 작성하는 것이 비효율적이라고 느껴져서 공통적인 모듈을 사용해서 api 호출할때마다 로그를 안찍어도 출력될 수 있게 사용하고 싶었다. 로그를 남겨서 에러가 발생했을 때 빠른 대처와 api 흐름이 정상 동작하고 있는지에 대해 파악하기에도 좋다. build.gradle 에 의존성 추가 // aop implementation 'org.springframework.boot:spring-boot-starter-aop' //Joiner implementation 'com.google.guava:guava:31.1-jre' aop 를 사용하기 위해 의존성을 추가해준다. 코드에서 joiner 를 사용하기 위해선 관련 의존성.. 2023. 3. 20.
[Spring] JPA repository 에서 count 사용하기 JPA에서 테이블 조회 시 Count 값을 가져오려면 Repository에 CountBy() 메소드를 추가해주면 되는데 만약 조회조건이 있다면 CountBy컬럼명(Param param) 과 같이 사용해주면 된다 마지막으로 count 조회 시 Long 타입으로 리턴하기 때문에 반드시 Return 데이터 타입을 Long으로 잡아줘야 한다 2022. 12. 15.
[spring] Failed to convert value of type 'java.lang.String' to required type 'java.time.LocalDateTime' 날짜 데이터 조회시 String 으로 데이터를 받아오고 있었고 사용해야 하는 값은 LocalDate 였다. String 으로 받아온 후 DateFormatter을 하지 않고 값을 api 에서 받아올때부터 LocalDate 로 사용했다. @RequestParam(value = "startDate", required = false) @DateTimeFormat(iso = DateTimeFormat.ISO.DATE, pattern="yyyy-MM-dd") LocalDate startDate 2022. 12. 12.
[Spring] JPA ERROR :: Unable to locate Attribute with the the given name on this ManagedType JPA ERROR :: Unable to locate Attribute with the the given name on this ManagedType 헤당 오류의 원인은 오타이다. DB 에 정의한 내용과 Entity 에서 선언한 컬럼명이 달라서 생기는 오류이다. 2022. 12. 9.