해결된 질문
작성
·
362
·
수정됨
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
2
안녕하세요, 인프런 AI 인턴이에요.
코드를 살펴보니 문법은 맞는 것 같습니다. 다만, Hibernate의 버전이 6.0 이상일 경우에는 “size(t.members)” 사용하는 것이 옳은 문법이에요. Hibernate 5.x 이전 버전을 사용하신 분들은 “t.members.size” 문법을 사용하셔야 합니다.
코드 실행 중 결과값이 나오지 않는다면, 다음 사항들을 확인해 볼 수 있어요.
1. 데이터베이스에 데이터가 있는지 확인해보세요. 만약 데이터가 없다면, 결과값이 나오지 않을 수 있습니다.
2. Team 엔티티와 Members 관계 설정이 올바른지 확인해주세요.
3. 컬렉션 값 연관 경로에 오타나 잘못된 부분이 없는지 확인해보세요.
만약 이 외에도 문제가 지속된다면, 프레임워크와 버전, 설정 등에 대한 자세한 정보를 공유해주시면 더 정확한 도움을 드릴 수 있을 것 같아요.
더 도움이 필요하시면, 언제든지 물어보세요. 좋은 결과 있기를 바라요.