Nic nie jest = NULL . Jeśli wpiszesz select * from test where value=NULL do interaktywnego oceniania zapytań, nic nie otrzymasz. JDBC nie przepisuje twojego wyrażenia, po prostu podmienia wartości.
Musisz użyć zapytania za pomocą is operator zamiast:
PreparedStatement select = c.prepareStatement("select * from test where value is NULL");
return select.executeQuery();
Powiedziałeś, że oczekujesz od JDBC, że będzie wystarczająco „sprytny”, by zrobić to za ciebie, ale byłoby to dużym naruszeniem rozdziału obaw. Możesz chcieć mieć parametr w zapytaniu za pomocą = które ustawiłeś NULL wiedząc, że ta relacja nigdy nie oceni prawdy (najprawdopodobniej jako część większego zestawu warunków).