Nada é
= NULL
. Se você digitou select * from test where value=NULL
em um avaliador de consulta interativo, você não receberia nada de volta. O JDBC não reescreve sua expressão, apenas substitui os valores. Você tem que usar uma consulta usando o
is
operador em vez disso:PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Você disse que espera que o JDBC seja "inteligente" o suficiente para fazer isso por você, mas isso seria uma grande violação da separação de interesses. Você pode muito bem querer para ter um parâmetro em sua consulta usando
=
que você define NULL
sabendo que essa relação nunca será avaliada como verdadeira (como parte de um conjunto maior de condições, provavelmente).