Estou tentando fazer uma busca no meu banco ao fazer o cadastro de Usuário.
Seguinte, no meu cadastro de usuário tem dois Spinner(Empresa, Pessoa) Gostaria de popular o Spinner pessoa com apenas as pessoas que trabalham na empresa selecionada. Porém a lógica que to seguindo não vai me retornar nada pois a entidade pessoa não possui o código da empresa. Então como trago esses dados filtrados?
Vou postar abaixo minha estrutura e meu código.
empresaBean
public void popular() {
try {
if (empresa != null) {
PessoaDAO pessoaDAO = new PessoaDAO();
pessoas = pessoaDAO.buscarPorEmpresa(empresa.getCodigo());
} else {
pessoas = new ArrayList<>();
}
} catch (RuntimeException erro) {
Messages.addGlobalError("Ocorreu um erro ao tentar filtrar as cidades");
erro.printStackTrace();
}
}
pessoaDAO
@SuppressWarnings("unchecked")
public List<Pessoa> buscarPorEmpresa(Long empresaCodigo) {
Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
try {
Criteria consulta = sessao.createCriteria(Pessoa.class);
consulta.add(Restrictions.eq("empresa.codigo", empresaCodigo));
consulta.addOrder(Order.asc("nome"));
List<Pessoa> resultado = consulta.list();
return resultado;
} catch (RuntimeException erro) {
throw erro;
} finally {
sessao.close();
}
}
usuario.xhtml
<p:outputLabel for="empresa" value="Empresa: " />
<p:selectOneMenu id="empresa" filter="true"
value="#{empresaBean.empresa}" required="true"
requiredMessage="O campo 'Empresa' é obrigatório"
converter="omnifaces.SelectItemsConverter">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione uma empresa" />
<f:selectItems value="#{empresaBean.empresas}" var="empresa"
itemValue="#{empresa}" itemLabel="#{empresa.nome}" />
<p:ajax listener="#{usuarioBean.popular}" update=":formCadastro:pessoa" />
</p:selectOneMenu>
<p:outputLabel for="pessoa" value="Pessoa:" />
<p:selectOneMenu id="pessoa" filter="true"
value="#{usuarioBean.usuario.pessoa}" required="true"
requiredMessage="O campo 'Pessoa' é obrigatório"
converter="omnifaces.SelectItemsConverter">
<f:selectItem noSelectionOption="true"
itemLabel="Selecione uma pessoa" />
<f:selectItems value="#{usuarioBean.pessoas}" var="pessoa"
itemValue="#{pessoa}" itemLabel="#{pessoa.nome} - #{pessoa.cpf}" />
</p:selectOneMenu>