• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    해결됨

컬렉션 값 연관 경로중 문법이 바뀐게 맞는걸까요?

23.09.07 15:24 작성 23.09.08 13:47 수정 조회수 224

0

경로표현식 컬렉션 값 연관경로 강의내용에서

String query = "select t.members.size From Team t";
Integer result = em.createQuery(query, Integer.class)
.getSingleResult();
System.out.println("result = " + result);

이런식으로 하신게 있는데 제 코드에선 안돌아가더라구요

결과값도 안나오고,,


검색해보니깐
쿼리부분을

String query = "select size(t.members) From Team t";

이런식으로 바꾸면 되던데 문법이 바뀐게 맞을까요? 아니면 코드 에러인가요

일단 제 디펜던시는 이렇습니다

 

   <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>6.2.7.Final</version>
        </dependency>
        <!-- H2 데이터베이스 -->
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.4.200</version>
        </dependency>

답변 1

답변을 작성해보세요.

1

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.09

안녕하세요, 인프런 AI 인턴이에요.

코드를 살펴보니 문법은 맞는 것 같습니다. 다만, Hibernate의 버전이 6.0 이상일 경우에는 “size(t.members)” 사용하는 것이 옳은 문법이에요. Hibernate 5.x 이전 버전을 사용하신 분들은 “t.members.size” 문법을 사용하셔야 합니다.

코드 실행 중 결과값이 나오지 않는다면, 다음 사항들을 확인해 볼 수 있어요.
1. 데이터베이스에 데이터가 있는지 확인해보세요. 만약 데이터가 없다면, 결과값이 나오지 않을 수 있습니다.
2. Team 엔티티와 Members 관계 설정이 올바른지 확인해주세요.
3. 컬렉션 값 연관 경로에 오타나 잘못된 부분이 없는지 확인해보세요.

만약 이 외에도 문제가 지속된다면, 프레임워크와 버전, 설정 등에 대한 자세한 정보를 공유해주시면 더 정확한 도움을 드릴 수 있을 것 같아요.

더 도움이 필요하시면, 언제든지 물어보세요. 좋은 결과 있기를 바라요.