[Java/SpringBoot] MySQL DB, JpaRepository(JPQL)를 활용했을 때의 오류 해결

2024. 4. 8. 10:58·Spring

문제 상황

프로젝트를 진행하던 도중, 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);

'Spring' 카테고리의 다른 글

[SpringBoot] @Value를 사용해 yaml 설정 파일의 값을 불러오는 방법  (1) 2025.07.25
[Java/SpringBoot] Spring Security 사용 시 특정 url들의 필터 무시가 작동되지 않았던 문제  (0) 2025.04.17
Java/Spring Framework/Spring Boot 개념 정리  (0) 2023.04.11
[IntelliJ/Java] Lombok 관련 오류  (0) 2023.03.26
'Spring' 카테고리의 다른 글
  • [SpringBoot] @Value를 사용해 yaml 설정 파일의 값을 불러오는 방법
  • [Java/SpringBoot] Spring Security 사용 시 특정 url들의 필터 무시가 작동되지 않았던 문제
  • Java/Spring Framework/Spring Boot 개념 정리
  • [IntelliJ/Java] Lombok 관련 오류
김왈왈이
김왈왈이
  • 김왈왈이
    저장소
    김왈왈이
  • 전체
    오늘
    어제
  • 링크

    • GitHub
    • 분류 전체보기 (40)
      • TIL (1)
      • Spring (5)
      • Andriod (4)
      • Unity (2)
      • Java (1)
      • C++ (0)
      • HTML CSS JavaScript (1)
      • 프로젝트 (11)
      • 코딩테스트 (11)
      • 기타 (4)
  • 최근 글

  • 태그

    공격구현
    유니티게임
    [Serializable]
    게임개발
    C++
    수학
    단축키
    에러
    게임프로토타입
    개발
    자료구조
    하위오브젝트반환
    구현
    c#
    springboot
    그리디 알고리즘
    브루트포스 알고리즘
    Unity
    프로토타입
    경합상태오류
    java
    유니티
    백준
    UnassignedReferenceException
    html
    게임
    silver iv
    silver v
    오류
    Quaternion.Euler()
  • hELLO· Designed By정상우.v4.10.4
김왈왈이
[Java/SpringBoot] MySQL DB, JpaRepository(JPQL)를 활용했을 때의 오류 해결
상단으로

티스토리툴바