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).