Problema com Retorno de Calendario no ResultSet!

Ja procurei em diversos lugares e faz um tempão que estou com essa problema, meu código é o seguinte:

	ArrayList<Bean> lista = new ArrayList<Bean>();
	Connection cn = null;
		try{
			cn = Conn.getConnection();
			ResultSet rs = cn.createStatement().executeQuery("select idLinha, titulo, dataInicio, dataFim from NovaTabela");
			while (rs.next()){
				Calendar dataInicio = Calendar.getInstance();
				if (rs.getDate("dataInicio") != null){
					dataInicio = Calendar.getInstance();
					dataInicio.set(rs.getDate("dataInicio").getYear()+1900, rs.getDate("dataInicio").getMonth(), rs.getDate("dataInicio").getDate());
				}
				
				Calendar dataFim = Calendar.getInstance();
				if (rs.getDate("dataFim") != null){
					dataFim = Calendar.getInstance();
					dataFim.set(rs.getDate("dataFim").getYear()+1900, rs.getDate("dataFim").getMonth(), rs.getDate("dataFim").getDate());
				}
				lista.add(new Bean(rs.getInt("idLinha"), rs.getString("titulo"), dataInicio, dataFim));
			}
			rs.close();
		}catch (SQLException e) {
			e.printStackTrace();
		}finally{
			Conn.freeConnection(cn);
		}

A questão é que não sei se existe um jeito mais facil para instanciar a data do Banco no Calendar, mas o principal problema é que quando um registro de data (dataInicio ou dataFim) não é inicializada correntamente, ficando (“0000-00-00”) ele da o seguinte erro:

        java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date

Alguem sabe como posso resolver isso?

vlw
[]'s