Recentemente, mentre scrivevo un codice Spring / JPA, mi sono imbattuto in un problema che di volta in volta affronterò: ho passato una raccolta vuota a un metodo repository che genera un'espressione IN
per la clausola WHERE
causando un'eccezione di sintassi SQL query ( WHERE column IN ()
). Per ovviare a questo problema, restituisco una raccolta vuota in un oggetto DAO, non consentendo l'esecuzione del codice SQL che è sintatticamente non valido (se è giustificato per un caso particolare). Secondo questo riferimento , vuoto ()
è illegale come IN
giusto operando è la seguente:
<in predicate value> ::= <table subquery> | <left paren> <in value list> <right paren>
<in value list> ::= <value expression> { <comma> <value expression> } ...
richiede che l'elenco valori abbia almeno un valore.
Mi stavo chiedendo: i motori di database SQL restituirebbero solo insiemi di risultati vuoti e la compatibilità con le versioni precedenti verrebbe interrotta se la grammatica SQL consentisse l'elenco di valori vuoto per l'operazione IN
?