[SQL] 콜렉션의 크기가 0 또는 비어있는 경우 쿼리 HQL 확인하기
SQL콜렉션의 크기가 0 또는 비어있는 경우 쿼리 HQL 확인하기
나는 (OneToMany에 의해 매핑) 빈 일정이 있습니다 컬렉션을 가지고있는 사용자를 포함 HQL 쿼리를 생성하려고 :
SELECT u FROM User u JOIN u.appointments uas WHERE u.status = 1 AND (uas.time.end < :date OR size(uas) = 0)
나는 몇 매너 (ELEMENT를 (존재하지), NULL IS)에 그것을 시도 또한 참조 : 컬렉션은 NHibernate에 (HQL)에 비어 있는지 확인하는 방법? (이것은 나를 위해 작동하지 않습니다)
여전히 내가 볼 또는 HQL 또는 SQL 서버에 일부 오류 싶어 발생하지
노트 :
작품에 가입하지 않고 쿼리 :
"FROM User u WHERE u.status = 1 AND size(u.appointments) = 0"
해결
또 다른 문제를 해결 JOIN :
SELECT u FROM User u LEFT JOIN u.appointments pas1 LEFT JOIN pas1.slot t WHERE u.status = 1 AND t.end <= :date1 OR t.end IS NULL ORDER BY u.name asc
해결법
-
==============================
1.작동합니다 비어 사용하면 (나는 JPQL 구문을 선호하는 것) :
작동합니다 비어 사용하면 (나는 JPQL 구문을 선호하는 것) :
SELECT u FROM User u WHERE u.status = 1 AND u.appointments IS EMPTY
그렇지 않은 경우, 생성 된 SQL을 보여주십시오.
-
==============================
2.당신은 당신의 생성 된 SQL을 살펴 보셨나요? 귀하의 방법은 여기에 잘 작동합니다 :
당신은 당신의 생성 된 SQL을 살펴 보셨나요? 귀하의 방법은 여기에 잘 작동합니다 :
// Hibernate query: const string hql = "from User u where u.Id = 101 and size(u.Appointments) = 0"; // Generates this working SQL: select user0_.Id as Id20_, user0_.Name as Name2_20_ from User user0_ where user0_.Id = 101 and (select count(appointment1_.Id_Solicitud) from Appointment appointment1_ where user0_.Id = appointment1_.Id_User) = 0
-
==============================
3.
// Hibernate query: const string hql = "from User u where u.Id = 101 and size(u.Appointments) = 0";
from https://stackoverflow.com/questions/3760711/hql-query-to-check-if-size-of-collection-is-0-or-empty by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 변수 파일 이름으로 대량 삽입 (0) | 2020.07.03 |
---|---|
[SQL] SQL 서버 AS 문 WHERE 문 내에서 열을 별칭 (0) | 2020.07.03 |
[SQL] 제약 조건은 DEFERRABLE이 INITIALLY IMMEDIATE 여전히 지연됩니다 정의? (0) | 2020.07.02 |
[SQL] 어떻게 안전 SQL 문자열로 문자열을 변환합니까? (0) | 2020.07.02 |
[SQL] sp_executesql을 표와 변수를 사용하여 (0) | 2020.07.02 |