집합함수 집합함수는 다음과 같은 특징이 있습니다. 집합함수는 값을 계산해서 하나의 값으로 반환하는 함수입니다. 보통 group by 자주 같이 사용됩니다. where 절에서 바로 사용할 수 없기 때문에 group by 이후에 having 또는 서브쿼리를 사용합니다. 함수 리턴타입 설명 count Long 개수를 구함 max, min Long 최대, 최소값 구함 avg Double 평균 구함 sum Long 합 구함 ▼ 예제의 Player 엔티티는 Team 엔티티와 관계하고 있습니다. ▼ max, min, avg, sum은 해당 값이 존재하지 않는 경우 null을 값으로 리턴합니다. 다음과 같이 TypedQuery를 생성해서 getSingleResult() 메서드를 실행하면 각각 salary의 평균과 최고..
JPQL 특정 속성 조회 JPQL 을 사용할 때 select 절에 선택한 대상이 두 개 이상일 때 결과 타입은 Object 배열이 됩니다. select 결과가 Object 배열이므로 getResultList() 메서드가 리턴한 List에 담긴 데이터도 Object 배열입니다. JPQL 특정 객체로 속성 조회 Object 배열을 사용해서 데이터를 조회하면 형변환이 필요하며 해당 객체를 사용하기 불편해집니다. 그래서 클래스를 만들어 새로운 객체에 대입하면 조회시 해당 클래스에 맞게 객체가 생성됩니다. 우선 다음과 같이 조회될 객체에서 필요한 속성을 포함한 클래스를 선언합니다. select 구분에 새로운 객체를 할당하고 데이터를 조회합니다.
JPA를 사용하면서 JQPL 로 쿼리를 작성했는데 다음과 같은 에러 문제를 겪었습니다. GROUP BY 명령을 실행할 때 MySQL 5.7 이상 버전 부터는 sql_mode 옵션을 변경해줘야 합니다. GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 오래된 데이터베이스에서는 문제없이 동작하는 코드 였는데 새로운 MySQL 을 도커로 설치하고 실행하니 문제가 되어서 찾아보았습니다. only_full_group_by 옵션을 비활성화 하는 방법은 다음과 같습니다. 관리자 권한으로 로그인 한뒤에 mysql 에서 다음과 같이 입력해서 only_full_group_by 옵션을 꺼주면 됩니다. 참고로 MySQL 뿐만아니라 MariaDB에서도..