Niente è = NULL
. Se hai digitato select * from test where value=NULL
in un valutatore di query interattivo, non otterresti nulla in cambio. JDBC non riscrive la tua espressione, si limita a sostituire i valori.
Devi usare una query usando is
operatore invece:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Hai detto che ti aspetti che JDBC sia abbastanza "intelligente" da farlo per te, ma sarebbe una grave violazione della separazione delle preoccupazioni. Potresti volere per avere un parametro nella tua query usando =
che hai impostato NULL
sapendo che quella relazione non verrà mai valutata vera (come parte di un insieme più ampio di condizioni, molto probabilmente).