You might want to check this link:
http://www.javaranch.com/journal/200510/Journal200510.jsp#a2
It explains the pros and cons of different methods of creating PreparedStatement with in clause.
EDIT:
An obvious approach is to dynamically generate the '?' part at runtime, but I don't want to merely suggest just this approach because depending on the way you use it, it might be inefficient (since the PreparedStatement will need to be 'compiled' every time it gets used)