Gente, tenho uma entidade Questoes e outra Pesquisa e quero selecionar a questao dentro de um cadastro de pesquisa e ir adicionando em uma tabela antes de salvar o cadastro

minha tela cadastrar_pesquisa.xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?> Tela de Pesquisa

</h:head>
<h:body>
<h:form>


<p:menubar>
<p:submenu label=“Cadastrar”>
<p:menuitem value=“Empresa"
url=”/pages/cadastro/cadastrar_empresa.xhtml" />
<p:menuitem value=“Questão"
url=”/pages/cadastro/cadastrar_questao.xhtml" />
<p:menuitem value=“Pesquisa"
url=”/pages/cadastro/cadastrar_pesquisa.xhtml" />
<p:menuitem value=“Estado"
url=”/pages/cadastro/cadastrar_estado.xhtml" />
</p:submenu>
</p:menubar>

</h:form>
<h:form id="formListagem">
	<p:panel header="Gestão de Pesquisa">
		<p>Informe abaixo os campos para pesquisa:</p>
		<p:panelGrid id="painelForm" columns="2">

			<p:outputLabel value="Pelo título da pesquisa: " />
			<p:inputText type="text"
				value="#{pesquisaBean.pesquisa.tituloDaPesquisa}" />

			<p:outputLabel value="Pela questão: " />
			<p:inputText />
		</p:panelGrid>

		<p:dataTable emptyMessage="Nada encontrado"
			value="#{pesquisaBean.pesquisas}" var="pesquisa" paginator="true"
			id="tabela">

			<f:facet name="header">
				<p:commandButton value="Novo" oncomplete="PF('dialogo').show()"
					update=":formCadastro:painel"
					actionListener="#{pesquisaBean.novo}" />
				<p:commandButton value="Pesquisar" />
				<p:commandButton value="Sair" update=":mensagem"
					actionListener="#{empresaBean.principal}"
					action="principal?faces-redirect=true" />
			</f:facet>

			<p:column headerText="Data da Pesquisa">
				<h:outputText value="#{pesquisa.dataPesquisa}" />
			</p:column>

			<p:column headerText="Titulo da Pesquisa">
				<h:outputText value="#{pesquisa.tituloDaPesquisa}" />
			</p:column>

			<p:column headerText="Descrição">
				<h:outputText value="#{pesquisa.descricao}" />
			</p:column>

			<p:column headerText="Questões">
				<h:outputText />
			</p:column>

			<p:column headerText="Opções">
				<p:commandButton icon="ui-icon-pencil"
					actionListener="#{pesquisaBean.editar}"
					update=":formCadastro:painel" oncomplete="PF('dialogo').show()">
					<f:attribute name="itemSelecionado" value="#{pesquisa}" />
					<f:actionListener
						type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
				</p:commandButton>

				<p:commandButton icon="ui-icon-trash"
					actionListener="#{pesquisaBean.excluir}"
					update=":mensagem :formListagem:tabela">
					<p:confirm header="Confirmação"
						message="Deseja excluir este item?" icon="ui-icon-alert" />
					<f:attribute name="itemSelecionado" value="#{pesquisa}" />
				</p:commandButton>
			</p:column>
		</p:dataTable>

	</p:panel>
	<p:confirmDialog global="true">
		<p:commandButton value="Sim" type="button"
			styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
		<p:commandButton value="Não" type="button"
			styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
	</p:confirmDialog>
</h:form>

<p:dialog header="Cadastro de Pesquisa" widgetVar="dialogo"
	draggable="false" resizable="false" modal="true" closable="false">

	<p:growl id="mensagem" />

	<h:form id="formCadastro">
		<h:panelGrid id="painel" columns="2">
			<p:outputLabel value="Codigo:" />
			<h:outputText value="#{pesquisaBean.pesquisa.codPesquisa}" />

			<p:outputLabel value="Título da Pesquisa*: " />
			<p:inputText type="text"
				value="#{pesquisaBean.pesquisa.tituloDaPesquisa}" required="true"
				requiredMessage="O campo 'Título da Pesquisa' é obrigatorio"
				size="29" />

			<p:outputLabel value="Descrição: " />
			<p:inputTextarea cols="30"
				value="#{pesquisaBean.pesquisa.descricao}">
			</p:inputTextarea>

			<p:outputLabel value="Data da Pesquisa" />
			<p:calendar mask="99/99/9999" size="10"
				value="#{pesquisaBean.pesquisa.dataPesquisa}"  />

		</h:panelGrid>
		<p:panelGrid columns="5">
			<p:outputLabel value="Questões*: " />
			<p:selectOneMenu filter="true" value="#{pesquisaBean.pesquisa}"
				required="true" requiredMessage="O campo 'Questões' é obrigatorio">
				<f:selectItem noSelectionOption="true"
					itemLabel="Selecione um item abaixo"></f:selectItem>
				<f:selectItems value="#{pesquisaBean.questoes}" var="questao"
					itemLabel="#{questao.enunciado}" />

			</p:selectOneMenu>

			<p:commandButton update=":formCadastro:painel :mensagem"
				value="Adicionar" actionListener="#{pesquisaBean.incluirItem}" />

			<p:selectBooleanCheckbox id="ok"
				value="#{pesquisaBean.relacao.obrigatorio}" />
			<p:outputLabel value="Obrigatório ?" />


		</p:panelGrid>

		<p:dataTable emptyMessage="Nenhuma questão adicionada ainda"
			value="#{pesquisaBean.questoes}" var="pesquisa">
			<p:column headerText="Questão">
				<h:outputText value="#{pesquisa.enunciado}" />
			</p:column>

			<p:column headerText="Obrigatorio">
				
			</p:column>

			<p:column headerText="Posição da questão">
				<p:inputText size="3" />
			</p:column>

			<p:column headerText="Opção">
				<p:commandButton icon="ui-icon-pencil"
					actionListener="#{pesquisaBean.editar}"
					update=":formCadastro:painel" oncomplete="PF('dialogo').show()">
					<f:attribute name="itemSelecionado" value="#{pesquisa}" />
					<f:actionListener
						type="org.omnifaces.eventlistener.ResetInputAjaxActionListener" />
				</p:commandButton>

				<p:commandButton icon="ui-icon-trash"
					update=":mensagem :formListagem:tabela">
					<p:confirm header="Confirmação"
						message="Deseja excluir este item?" icon="ui-icon-alert" />
					<f:attribute name="itemSelecionado" value="#{pesquisa}" />
				</p:commandButton>
			</p:column>

			<p:confirmDialog global="true">
				<p:commandButton value="Sim" type="button"
					styleClass="ui-confirmdialog-yes" icon="ui-icon-check" />
				<p:commandButton value="Não" type="button"
					styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
			</p:confirmDialog>

		</p:dataTable>

		<h:panelGrid columns="2">
			<p:commandButton value="Salvar" update=":mensagem"
				actionListener="#{pesquisaBean.cadastrar}" />
			<p:commandButton value="Sair" oncomplete="PF('dialogo').hide()" />
		</h:panelGrid>
	</h:form>
</p:dialog>

</h:body>

aqui é minha bean :

package br.com.bean;

import java.io.Serializable;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

import org.omnifaces.util.Messages;

import br.com.dao.PesquisaDao;
import br.com.dao.QuestaoDao;
import br.com.dao.RegistroDoUsuarioDao;
import br.com.modelo.Alternativa;
import br.com.modelo.Pesquisa;
import br.com.modelo.Questao;
import br.com.modelo.RegistroDoUsuario;
import br.com.modelo.RelacionamentoPesquisaComQuestoes;

@SuppressWarnings(“serial”)
@ManagedBean
@ViewScoped
public class PesquisaBean implements Serializable{

private Questao questao = new Questao();
private RelacionamentoPesquisaComQuestoes relacao = new RelacionamentoPesquisaComQuestoes();
private List<Questao> questoes;
private List<Pesquisa> pesquisas = new ArrayList<Pesquisa>();
private Pesquisa pesquisa = new Pesquisa();
private PesquisaDao dao = new PesquisaDao();
private RegistroDoUsuario registro = new RegistroDoUsuario();
private QuestaoDao questaoDao = new QuestaoDao();
private Alternativa alternativa = new Alternativa();
private List<Questao> questaoSelecionada;

public void novo() {
	pesquisa = new Pesquisa();

}

public PesquisaBean() {
	listarQuestoes();
}


public void cadastrar() {
	//pesquisa.setDataPesquisa(new Date());
	registro.setDataCadastro(new Date());
	registro.setQuestoes(questao);
	registro.setRespostas(questao.getEnunciado());
	registro.setAlternativa(alternativa);
	
	RegistroDoUsuarioDao registroDao = new RegistroDoUsuarioDao();
	
	try {
		
		registroDao.cadastrar(registro);
		Messages.addFlashGlobalInfo("Cadastro salvo com sucesso");
		pesquisa.setRegistroDoUsuario(registro);	
		
		dao.cadastrar(pesquisa);
		
		Messages.addFlashGlobalInfo("Cadastrado com sucesso!");
		novo();
		questoes = questaoDao.listar();
		
		System.out.println("cadastrou");
	} catch (SQLException e){
		Messages.addGlobalError("Erro ao tentar cadastrar Pesquisa");
		e.printStackTrace();
	}
	
}

public void incluirItem(){
	try {
		questoes = questaoDao.listar();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

public void excluir(ActionEvent evento){
	try {
		pesquisa = (Pesquisa) evento.getComponent().getAttributes().get("itemSelecionado");

		PesquisaDao dao = new PesquisaDao();
		dao.deletar(pesquisa);

		pesquisas = dao.listar();

		Messages.addGlobalInfo("Empresa removida com sucesso! ");
	} catch (SQLException e) {
		Messages.addGlobalError("Erro ao tentar excluir");
		e.printStackTrace();
	}
}

public void editar(ActionEvent evento){
	pesquisa = (Pesquisa) evento.getComponent().getAttributes().get("itemSelecionado");
}

//@PostConstruct
public void listarQuestoes(){
	
	try {
		questoes = questaoDao.listar();
	} catch (SQLException e) {
		Messages.addGlobalError("Erro ao tentar listar");
		e.printStackTrace();
	}
}

@PostConstruct
public void listar(){
	PesquisaDao dao = new PesquisaDao();		
	try {
		//setPesquisas(dao.listar());
		pesquisas = dao.listar();
	} catch (SQLException e) {
		Messages.addGlobalError("Erro ao tentar listar");
		e.printStackTrace();
	}
}


public Pesquisa getPesquisa() {
	return pesquisa;
}

public void setPesquisa(Pesquisa pesquisa) {
	this.pesquisa = pesquisa;
}

public List<Questao> getQuestoes() {
	return questoes;
}

public void setQuestoes(List<Questao> questoes) {
	this.questoes = questoes;
}

public RelacionamentoPesquisaComQuestoes getRelacao() {
	return relacao;
}

public void setRelacao(RelacionamentoPesquisaComQuestoes relacao) {
	this.relacao = relacao;
}

public Questao getQuestao() {
	return questao;
}

public void setQuestao(Questao questao) {
	this.questao = questao;
}

public Object pesquisaPorCodigo(Integer codigo) {
	PesquisaDao dao = new PesquisaDao();
	
	return dao.pesquisaPorCodigo(codigo);
}

public List<Pesquisa> getPesquisas() {
	return pesquisas;
}

public void setPesquisas(List<Pesquisa> pesquisas) {
	this.pesquisas = pesquisas;
}


public RegistroDoUsuario getRegistro() {
	return registro;
}


public void setRegistro(RegistroDoUsuario registro) {
	this.registro = registro;
}

public List<Questao> getQuestaoSelecionada() {
	return questaoSelecionada;
}

public void setQuestaoSelecionada(List<Questao> questaoSelecionada) {
	this.questaoSelecionada = questaoSelecionada;
}

}

essa é minha entidade Pesquisa
package br.com.modelo;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@SuppressWarnings(“serial”)
@Entity
@Table(name=“tb_pesquisa”)
public class Pesquisa implements Serializable{

@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer codPesquisa;
private String tituloDaPesquisa;
private String descricao;

@Temporal(TemporalType.DATE)
private Date dataPesquisa;

@ManyToOne
@JoinColumn(nullable=false)
private RegistroDoUsuario registroDoUsuario;

public RegistroDoUsuario getRegistroDoUsuario() {
	return registroDoUsuario;
}

public void setRegistroDoUsuario(RegistroDoUsuario registroDoUsuario) {
	this.registroDoUsuario = registroDoUsuario;
}

public Date getDataPesquisa() {
	return dataPesquisa;
}

public void setDataPesquisa(Date dataPesquisa) {
	this.dataPesquisa = dataPesquisa;
}

public Integer getCodPesquisa() {
	return codPesquisa;
}

public void setCodPesquisa(Integer codPesquisa) {
	this.codPesquisa = codPesquisa;
}

public String getTituloDaPesquisa() {
	return tituloDaPesquisa;
}

public void setTituloDaPesquisa(String tituloDaPesquisa) {
	this.tituloDaPesquisa = tituloDaPesquisa;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

@Override
public String toString() {
	return "Pesquisa [codPesquisa=" + codPesquisa + ", tituloDaPesquisa=" + tituloDaPesquisa + ", descricao="
			+ descricao + ", dataPesquisa=" + dataPesquisa + "]";
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((codPesquisa == null) ? 0 : codPesquisa.hashCode());
	result = prime * result + ((dataPesquisa == null) ? 0 : dataPesquisa.hashCode());
	result = prime * result + ((descricao == null) ? 0 : descricao.hashCode());
	result = prime * result + ((tituloDaPesquisa == null) ? 0 : tituloDaPesquisa.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Pesquisa other = (Pesquisa) obj;
	if (codPesquisa == null) {
		if (other.codPesquisa != null)
			return false;
	} else if (!codPesquisa.equals(other.codPesquisa))
		return false;
	if (dataPesquisa == null) {
		if (other.dataPesquisa != null)
			return false;
	} else if (!dataPesquisa.equals(other.dataPesquisa))
		return false;
	if (descricao == null) {
		if (other.descricao != null)
			return false;
	} else if (!descricao.equals(other.descricao))
		return false;
	if (tituloDaPesquisa == null) {
		if (other.tituloDaPesquisa != null)
			return false;
	} else if (!tituloDaPesquisa.equals(other.tituloDaPesquisa))
		return false;
	return true;
}

}

essa é minha entidade Questao:

package br.com.modelo;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name=“tb_questao”)
public class Questao implements Serializable{

private static final long serialVersionUID = 7909339630017003537L;
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer codQuestoes;
private String enunciado;
private String observacoes;

@Enumerated(EnumType.STRING)
private Tipo tipo;

// @ManyToOne
// private TipoDeQuestao tipoDeQuestao;

public Integer getCodQuestoes() {
	return codQuestoes;
}

public void setCodQuestoes(Integer codQuestoes) {
	this.codQuestoes = codQuestoes;
}

public String getEnunciado() {
	return enunciado;
}

public void setEnunciado(String enunciado) {
	this.enunciado = enunciado;
}

public String getObservacoes() {
	return observacoes;
}

public void setObservacoes(String observacoes) {
	this.observacoes = observacoes;
}

// public TipoDeQuestao getTipoDeQuestao() {
// return tipoDeQuestao;
// }
//
// public void setTipoDeQuestao(TipoDeQuestao tipoDeQuestao) {
// this.tipoDeQuestao = tipoDeQuestao;
// }

public Tipo getTipo() {
	return tipo;
}

public void setTipo(Tipo tipo) {
	this.tipo = tipo;
}

@Override
public String toString() {
	return "Questao [codQuestoes=" + codQuestoes + ", enunciado=" + enunciado + ", observacoes=" + observacoes
			+ ", tipo=" + tipo + "]";
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((codQuestoes == null) ? 0 : codQuestoes.hashCode());
	result = prime * result + ((enunciado == null) ? 0 : enunciado.hashCode());
	result = prime * result + ((observacoes == null) ? 0 : observacoes.hashCode());
	result = prime * result + ((tipo == null) ? 0 : tipo.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Questao other = (Questao) obj;
	if (codQuestoes == null) {
		if (other.codQuestoes != null)
			return false;
	} else if (!codQuestoes.equals(other.codQuestoes))
		return false;
	if (enunciado == null) {
		if (other.enunciado != null)
			return false;
	} else if (!enunciado.equals(other.enunciado))
		return false;
	if (observacoes == null) {
		if (other.observacoes != null)
			return false;
	} else if (!observacoes.equals(other.observacoes))
		return false;
	if (tipo != other.tipo)
		return false;
	return true;
}

}

esse é o conversor de Pesquisa

package br.com.conversores;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;

import br.com.bean.PesquisaBean;
import br.com.modelo.Pesquisa;

public class PesquisaConverter implements Converter {

@Override
public Object getAsObject(FacesContext fc, UIComponent uic, String codigoString) {
	if(codigoString != null && codigoString.trim().length() > 0) {
		
		Integer codigo = Integer.valueOf(codigoString);
		PesquisaBean bean = new PesquisaBean();
      
        return bean.pesquisaPorCodigo(codigo);
       
    }
    else {
        return null;
    }
	
}

@Override
public String getAsString(FacesContext fc, UIComponent uic, Object pesquisaObjeto) {
	 if(pesquisaObjeto != null) {
		 Pesquisa pesquisa = (Pesquisa) pesquisaObjeto;
            return pesquisa.getCodPesquisa().toString();
        }
     return null;  
}

}