Como lidar com (talvez) valores nulos em um PreparedStatement?

A afirmação é

SELECT * FROM tableA WHERE x = ?

e o parâmetro é inserido via java.sql.PreparedStatement 'stmt'

stmt.setString(1, y); // y may be null

E sey é nulo, a instrução não retorna linhas em todos os casos porquex = null é sempre falso (deve serx IS NULL) Uma solução seria

SELECT * FROM tableA WHERE x = ? OR (x IS NULL AND ? IS NULL)

Mas então eu tenho que definir o mesmo parâmetro duas vezes. Existe uma solução melhor?

Obrigado!