전체 글
cors 에러 문제 - trim을 안했다..
cors 에러 문제가 자꾸 나서 원인을 파악하려 했지만 찾기가 힘들었다.이미 하라는 것은 다했기 때문에 뭐가 문제인지 몰랐다. 하지만 원인은 너무도 쉬운 것이었다.원래 쉬운 것을 찾는게 더 어려운 것 같다.... app: cors: allowedOrigins: http://localhost:8080, http://localhost:8081, http://localhost:3000 이런식으로 허용해주고 있었는데 private List parseAllowedOrigins() { return Arrays.asList(allowedOrigins.split(","));}- 여기가 문제였다. 콤마하고 띄워쓰기가 있어서 제대로 적용이 되지 않았던 것이다...ㅠㅠㅠ private List parseAllo..
빈 등록 안하고 싶을 때 - @Autowired(required = false)
빈 등록이 필수가 아닌데 final로 빈을 등록하고 있었다!!그래서 @Autowired(required = false)를 주었다. 이후 null 체크를 하여 코드를 진행하였다.@Autowired(required = false)private SlackNotifier slackNotifier;if(slackNotifier != null) { // Slack으로 에러 알림 전송 slackNotifier.sendErrorNotification( "서버 에러 발생 (500 Internal Server Error)", e.getMessage() != null ? e.getMessage() : "알 수 없는 서버 에러가 발생했습니다.", e );}
@WithCustomMockUser - 테스트 코드 작성 시 인증
컨트롤러단에서 @AuthenticationPrincipal을 이용해 id값을 가져와 쓰고 있었다.테스트 코드를 작성하는데 id값을 어떻게 가져와야 할 지 몰랐다. 그래서 @WithCustomMockUser 어노테이션을 만들어 사용하였다.package com.swyp.libri.domain.annotation;import org.springframework.security.test.context.support.WithSecurityContext;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;@Retention(RetentionPolicy.RUNTIME)@WithSecurityContext(factory = ..
There were failing tests. See the report at: file:///C:/repository/ 프로젝트/build/reports/tests/test/index.html
사이드 프로젝트를 하는 도중 Swagger와 restDocs를 같이 쓸 수 있다하여 우선 빌드를 했다.그런데 There were failing tests. See the report at: file:///C:/repository/ 프로젝트/build/reports/tests/test/index.html이런 에러가 뜨는 것이다.에러 경로를 따라가 파악해보니 테스트 코드는@ActiveProfiles("test")이것으로 테스트 환경에서 돌리는 것이었다. 그래서 application-test.yml에 jwt와 Oauth와 같은 설정 정보를 넣어줘서 apllication-local.yml 파일과 맞추어 줘야 한다는 것을 알았다.

입양 시각 구하기(2)
SET @HOUR = -1;SELECT(@HOUR := @HOUR + 1) AS HOUR,(SELECT COUNT(*)FROM ANIMAL_OUTSWHERE HOUR(DATETIME)=@HOUR) AS COUNTFROM ANIMAL_OUTSWHERE @HOUR

년, 월, 성별 별 상품 구매 회원 수 구하기
SELECT YEAR(A.SALES_DATE) AS YEAR,MONTH(A.SALES_DATE) AS MONTH,B.GENDER,COUNT(DISTINCT(A.USER_ID)) AS USERSFROM ONLINE_SALE A JOIN USER_INFO BON A.USER_ID = B.USER_IDWHERE B.GENDER IS NOT NULLGROUP BY YEAR, MONTH, B.GENDERORDER BY YEAR, MONTH, B.GENDER;

식품분류별 가장 비싼 식품의 정보 조회하기
SELECT CATEGORY,PRICE AS MAX_PRICE,PRODUCT_NAMEFROM FOOD_PRODUCT WHERE (CATEGORY, PRICE) IN (SELECT CATEGORY, MAX(PRICE) AS PRICE FROM FOOD_PRODUCT GROUP BY CATEGORY HAVING (CATEGORY = '과자' OR CATEGORY = '국' OR CATEGORY = '김치' ..

저자 별 카테고리 별 매출액 집계하기
SELECT A.AUTHOR_ID,B.AUTHOR_NAME,A.CATEGORY,SUM(C.SALES * A.PRICE) AS TOTAL_SALES FROM BOOK A JOIN AUTHOR BON A.AUTHOR_ID = B.AUTHOR_IDJOIN BOOK_SALES CON A.BOOK_ID = C.BOOK_IDWHERE C.SALES_DATE LIKE '2022-01%'GROUP BY A.AUTHOR_ID, A.CATEGORYORDER BY A.AUTHOR_ID, A.CATEGORY DESC;

보호소에서 중성화한 동물
SELECT A.ANIMAL_ID,A.ANIMAL_TYPE,A.NAMEFROM ANIMAL_INS A JOIN ANIMAL_OUTS BON A.ANIMAL_ID = B.ANIMAL_IDWHERE (A.SEX_UPON_INTAKE NOT LIKE '%Spayed%'AND A.SEX_UPON_INTAKE NOT LIKE '%Neutered%')AND (B.SEX_UPON_OUTCOME LIKE '%Spayed%'OR B.SEX_UPON_OUTCOME LIKE '%Neutered%')ORDER BY A.ANIMAL_ID;

그룹별 조건에 맞는 식당 목록 출력하기
SELECT A.MEMBER_NAME,B.REVIEW_TEXT,DATE_FORMAT(B.REVIEW_DATE, '%Y-%m-%d') AS REVIEW_DATEFROM MEMBER_PROFILE A JOIN REST_REVIEW BON A.MEMBER_ID = B.MEMBER_IDWHERE A.MEMBER_ID = (SELECT C.MEMBER_ID FROM REST_REVIEW C GROUP BY C.MEMBER_ID ORDER BY COUNT(*) DESC LIMIT 1)ORDER BY REVIEW_DATE, B.REVIEW_TEXT;- =과 IN은 반환되는 결과의 개수에 따라 다르게 사용해야 한다.