Inserção no banco de dados(POSTGRESQL)

Fala galera beleza, precisaria de uma força aqui, estou tentando cadastrar o aluno vinculado com o seu responsavel porém quando eu tento fazer isso aparece um erro :
ERRO: inserção ou atualização em tabela “aluno” viola restrição de chave estrangeira "alunos_fk"
Detalhe: Chave (id_responsavel)=(0) não está presente na tabela “responsavel”.

Tentei de tudo e mais um pouco estou desesperado, fico no aguardo de alguma ajuda!

[code]
public class AlunoDao {

/**
 * Cadastra o Aluno
 * 
 * @param nome
 * @param cgm
 * @param turma
 * @return
 */

public int cadastroAluno(Aluno aluno) {
	int retorno = 0;
	Connection con = null;
	try {
		int oi = localizaPai(aluno);
		con = new Conexao().criarConexao();
		String sql = "INSERT INTO aluno(id_responsavel,nome_aluno, cgm) VALUES (?,?,?)";
		PreparedStatement comando = con.prepareStatement(sql);
		comando.setInt(1, localizaPai(aluno));
		comando.setString(2, aluno.getNome());
		comando.setString(3, aluno.getCgm());
		comando.execute();
		comando.close();
		con.close();
	} catch (SQLException e) {
		System.out.println(e.getMessage());
	} catch (ClassNotFoundException e) {
		System.out.println(e.getMessage());
	} catch (Exception e) {
		System.out.println(e.getMessage());
	}
	return retorno;

}

public int localizaPai(Aluno aluno) {
	int retorno = 0;
	Connection con = null;
	try {
		con = new Conexao().criarConexao();
		String sql = "SELECT nome, cpf, id_responsavel FROM responsavel WHERE cpf = '?' ";
		PreparedStatement comando = con.prepareStatement(sql);
		ResultSet rs = comando.executeQuery();
		while (rs.next()) {
			retorno = rs.getInt("id_responsavel");
		}
		con.close();
	} catch (SQLException e) {
		System.out.println(e.getMessage());
	} catch (ClassNotFoundException e) {
		System.out.println(e.getMessage());
	} catch (Exception e) {
		System.out.println(e.getMessage());
	}
	return retorno;
}

}[/code]

mais repare bem q ele te deu a descriçao do erro

Chave (id_responsavel)=(0) não está presente na tabela “responsavel”

voce tem q passar um valor válido q exista na tabela resposánvel

debugue ou printe e veja qual id_responsavel está sendo setado no comando.setInt(1, localizaPai(aluno));