문제 상황
프로젝트를 진행하던 도중, h2 database로 로컬 환경에서 테스트 했을 때는 잘 작동되었으나, MySQL로 DB를 교체한 뒤 AWS에 서버를 배포하니까 오류가 났음.....
오류 코드를 구글링 했을 때는 원하는 해결방법이 나오지 않아 조금 헤멨다가, 자세히 보니 SQL 테이블 관련해서 무언가 값이 나오지 않는 것 같아 Repository 클래스의 SQL문을 다른 방식으로 바꾸어서 해결했다. JOIN 시킬 때 해결 후 SQL문과 같이 명시적으로 조인 조건을 지정해줘야 되나보다.
혹시나 나와 같은 에러로 고통받는 사람이 있을까 싶어 기록해둔다......
오류 코드
Cannot invoke "org.hibernate.sql.ast.tree.from.TableGroup.getModelPart()"
because the return value of "org.hibernate.sql.ast.spi.FromClauseAccess.findTableGroup(org.hibernate.spi.NavigablePath)" is null
해결 전 SQL문 (JpaRepository 사용)
// (요청인 기준 검색) 특정 사용자와 완전 친구 상태인 사람들 중에서 검색 결과 가져오기
@Query("SELECT m FROM Friend f LEFT JOIN f.responseUser m WHERE f.requestUser = :requestUser"
+ " AND f.isFriend = true AND m.name LIKE :name")
List<User> getSearchFriendList(@Param("requestUser") User requestUser, @Param("name") String name);
// 해당 유저의 친구들 중, 외출 시간이 N분 남은 사람들 불러오기
@Query("SELECT m "
+ "FROM Friend f JOIN f.responseUser m JOIN m.schedules s "
+ "WHERE f.requestUser = :requestUser AND f.isFriend = true"
+ " AND s.date = :date"
+ " AND (s.outTime BETWEEN :startTime AND :endTime)")
List<User> getStingList(@Param("requestUser") User requestUser, @Param("date") LocalDate date,
@Param("startTime") LocalTime startTime, @Param("endTime") LocalTime endTime);
해결 후 SQL문 (JpaRepository 사용)
// (요청인 기준 검색) 특정 사용자와 완전 친구 상태인 사람들 중에서 검색 결과 가져오기
@Query("SELECT m FROM Friend f LEFT JOIN User m ON f.responseUser = m"
+ " WHERE f.requestUser = :requestUser"
+ " AND f.isFriend = true AND m.name LIKE :name")
List<User> getSearchFriendList(@Param("requestUser") User requestUser, @Param("name") String name);
// 해당 유저의 친구들 중, 외출 시간이 N분 남은 사람들 불러오기
@Query("SELECT m "
+ "FROM Friend f JOIN User m ON f.responseUser = m"
+ " JOIN Schedule s ON m = s.user"
+ " WHERE f.requestUser = :requestUser AND f.isFriend = true"
+ " AND s.date = :date"
+ " AND (s.outTime BETWEEN :startTime AND :endTime)")
List<User> getStingList(@Param("requestUser") User requestUser, @Param("date") LocalDate date,
@Param("startTime") LocalTime startTime, @Param("endTime") LocalTime endTime);
'Java Kotlin' 카테고리의 다른 글
[Java/SpringBoot] Spring Security 사용 시 특정 url들의 필터 무시가 작동되지 않았던 문제 (2) | 2025.04.17 |
---|---|
Java/Spring Framework/Spring Boot 개념 정리 (0) | 2023.04.11 |
[IntelliJ/Java] Lombok 관련 오류 (0) | 2023.03.26 |
[안드로이드 스튜디오/Kotlin] SQLite foreign key mismatch 오류 (0) | 2022.07.24 |
Kotlin Unresolved reference 오류 (0) | 2022.01.12 |