Java.util.Date para java.sql.Date

Estou com um problema ao passar um objeto java.util.Date para um java.sql.Date

Fragmento do meu JSP:

<%@ page import="java.util.Date"%>

<%
		
    DateFormat formatter = new SimpleDateFormat("dd/M/yyyy HH:mm:ss");
    Date date = (Date)formatter.parse("29/5/2006 12:13:33");

	DownloadBO downloadBO = DownloadBO.getInstance();
	TipoBrindeDownload tpbrinde = new TipoBrindeDownload();
	SecaoVO secao = new SecaoVO();
	Download download = new Download();
	
	tpbrinde.setId(new Integer(17));
	secao.setId(5597);
	
	download.setSecao(secao);
	download.setData(date);
	
	download.setTipo(tpbrinde);
	downloadBO.excluirDownload(download);
	out.println("Procedimento executado. Confira no banco o resultado!");
%>

Fragmento do meu Java:

	public void excluirDownloadPorData(Download download) throws IntegrationException
	{

StringBuffer sqlSelect = new StringBuffer();
sqlSelect.append("SELECT download_id FROM tb_glb_gen_download WHERE tipo_id = ? and session_id = ? and create_dt < TO_DATE(?, 'dd/mm/yyyy HH24:MI:SS')");
PreparedStatement preparedStatement = null;
ResultSet rs = null;
		
Connection connection = null;
try
{
	connection = super.getConnection();
	preparedStatement = connection.prepareStatement(sqlSelect.toString());	
	preparedStatement.setInt(1, download.getTipo().getId().intValue());
	preparedStatement.setInt(2, download.getSecao().getId());
	preparedStatement.setDate(3, (Date) download.getData()); // Mudar o formato			
	rs = preparedStatement.executeQuery();

No SetDate do java, se eu faço o cast para java.sql.Date como está recebo java.lang.ClassCastException: java.util.Date na linha abaixo:

preparedStatement.setDate(3, (Date) download.getData()); // Mudar o formato

O que posso fazer?

preparedStatement.setDate(3, new Date(download.getData().getTime()));

No Jsp eu setei um formato específico para a data. (Verifique o codigo que postei)

Quero inseri-la no banco dessa mesma forma.

Com o preparedStatement.setDate(3, (Date) download.getData());
que vc me passou, ele oculta o horário.

Então, alterei para:

preparedStatement.setTimestamp(3, new java.sql.Timestamp(download.getData().getTime()));

Mesmo assim, está montando a query assim:

SELECT download_id FROM tb_glb_gen_download WHERE tipo_id = 17 and session_id = 5597 and TO_CHAR(create_dt, ‘dd/mm/yyyy HH24:MI:SS’) < 2006-05-29 12:13:33.0

dando erro de: java.sql.SQLException: ORA-01830: date format picture ends before converting entire input string

Como proceder?