public long inserir(Pesquisa pesquisa) throws Exception
	{
		String sql = "INSERT INTO pesquisa (titulo, orientador, pesquisador_responsavel, ano_submissao, tempo_duracao, tipo, qualificacao, impacto_pesquisa, gerou_patente, status, resultado, instituicao_submissao, fonte_financiamento, area_conhecimento_CNPq, resumo) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
		long idGerado = 0;

		try
		{
			PreparedStatement stmt = ConnectionFactory.getConnection().prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
			stmt.setString(1, pesquisa.getTitulo());
			stmt.setLong(2, pesquisa.getOrientador().getId());
			stmt.setLong(3, pesquisa.getPesquisadorResponsavel().getId());
			stmt.setInt(4, pesquisa.getAnoSubmissao());
			stmt.setInt(5, pesquisa.getTempoDuracao());
			stmt.setString(6, pesquisa.getTipo());
			stmt.setString(7,pesquisa.getQualificacao());
			stmt.setString(8, pesquisa.getImpactoPesquisa());
			stmt.setBoolean(9, pesquisa.isGerouPatente());
			stmt.setString(10, pesquisa.getStatus());
			stmt.setString(11, pesquisa.getResultado());
			stmt.setLong(12, pesquisa.getInstituicaoSubmissao().getId());
			stmt.setLong(13, pesquisa.getFonteFinanciamento().getId());
			stmt.setLong(14, pesquisa.getAreaConhecimentoCNPq().getId());
			stmt.setString(15, pesquisa.getResumo().toString());
			stmt.executeUpdate();

			ResultSet rs = stmt.getGeneratedKeys();

			if (rs.next())
			{
				idGerado = rs.getLong(1);
			}

			new PesquisacolaboradoresDAO().inserir(idGerado, pesquisa.getColaboradores());
			new PesquisaPalavrasChaveDAO().inserir(idGerado, pesquisa.getPalavrasChave());
			new PesquisaInstituicoesCooperadorasDAO().inserir(idGerado, pesquisa.getInstituicoesCooperadoras());
			new PesquisaLocalDAO().inserir(idGerado, pesquisa.getLocais());
		}
		catch (SQLException e)
		{
			throw e;
		}
		
		return idGerado;
	}