작성
·
191
·
수정됨
0
db는 mysql로 바꿔서 하고 있습니다.
데이터는 있는데 안불러와지는데 어떤게 문제 일까요?
답변 2
0
안녕하세요, 이도원입니다.
MySql에 저장되어 있는 데이터 3건에 대해 결과를 가져오기는 했으나, ModelMapper의해 ResponseEntity 로 변환되는 과정에서 제대로 변환이 되지 않은 것 같습니다. 개수는 3회가 반복해서 실행이 되고 있지만, 변환되지 못해서 (Field 명 등의 이슈 등), 실제 저장된 데이터가 존재하지 않는 것 같습니다.
실제로 첨부해 주신 Debug mode를 보면, Controller의 ModelMapper로 변환하는 부분에서 변환이 되지 않아, Results 객체에 빈 데이터를 가진 객체가 저장되고 있는게 확인되고 있습니다.
아래 코드는 저희가 테스트한 order-service (mysql 사용) 에서의 orders api에 대한 Debug 화면입니다. Mysql은 8.1.0 Docker 버전으로 실행하였고, Driver파일도 8.1.0 버전으로 실행하였습니다. 우선 H2 DB나 다른 DB에서도 동일한 결과 인지 확인해 보시고, 작업하신 환경을 공유해 주시면 (소스 코드 또는 Mysql 버전 등) 저희도 다시한번 확인해 보도록 하겠습니다.
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.1.0</version>
</dependency>
아래 github 주소에서 Sring Boot 3.2 + Spring Cloud 2023.0.0 버전 예제를 확인하실 수 있습니다
joneconsulting/toy-msa at springboot3.2 (github.com)
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다.
상품 목록조회 API 호출 결과로 데이터가 비어있는 문제가 발생한 것으로 보아, 몇 가지 가능한 문제 원인을 들 수 있습니다.
CatalogEntity
에서 데이터를 읽어오는 과정에 문제가 있을 수 있습니다. CatalogEntity
클래스와 데이터베이스 테이블 간의 매핑이 정확히 이루어지지 않았을 가능성이 있습니다. 예를 들어, 클래스 필드와 데이터베이스 컬럼 간의 이름 불일치나 타입 불일치 등이 원인일 수 있습니다.
ResponseCatalog
객체로의 변환이 제대로 이루어지지 않았을 수 있습니다. 해당 객체 변환 로직을 다시 검토하여, 모든 필드가 올바르게 매핑되고 있는지 확인하세요. 특히, ModelMapper
를 사용한 변환 과정에서 설정이나 사용 방법에 오류가 없는지 확인하는 것이 중요합니다.
API 응답을 구성하는 과정에서 문제가 발생했을 수 있습니다. getCatalogs()
메서드 내에서 catalogList
를 result
리스트로 변환하는 과정을 잘 검토해보세요. 각 CatalogEntity
인스턴스가 ResponseCatalog
객체로 올바르게 변환되어 result
리스트에 추가되었는지 확인해야 합니다.
위의 점들을 확인해보시고 문제가 해결되지 않는다면, 디버거를 사용하여 getCatalogs()
메서드 내부에서 실제로 데이터가 어떻게 처리되고 있는지 점검해보시기 바랍니다. 데이터베이스와의 연결, 엔티티의 로드, 객체 변환 과정 등에서 예상치 못한 문제가 발생할 수 있으므로, 각 단계별로 세심한 확인이 필요합니다.
데이터베이스가 MySQL로 변경되었다면, application.properties
또는 application.yml
설정 파일에서 MySQL 데이터베이스 연결 설정이 올바르게 구성되어 있는지도 확인해보세요. 데이터베이스 URL, 사용자명, 비밀번호 등이 정확한지 검토하시기 바랍니다.
또한, JPA 관련 로그를 활성화하여 데이터베이스 쿼리 실행 과정을 로그를 통해 직접 확인해볼 수도 있습니다. 이를 통해 SQL 쿼리가 예상대로 실행되고 있는지, 데이터베이스에서 올바른 결과를 가져오고 있는지 확인할 수 있습니다.