Preciso exibir uma lista de pessoas com os campos Código, Nome, CPF/CNPJ, Nome do Município e UF.
<p:autoComplete id="pessoaAutoComplete" value="#{myBean.pessoa}" var="p"
itemLabel="#{p.nome}" itemValue="#{p}"
completeMethod="#{myBean.completePessoa}">
<p:column styleClass="TexAlRight">
<h:outputText value="#{p.empresa_codigo}"/>
</p:column>
<p:column>
<h:outputText value="#{p.nome}"/>
</p:column>
<p:column styleClass="TexAlCenter">
<h:outputText value="#{p.cnpjcpf}" />
</p:column>
<p:column>
<h:outputText value="#{p.cidade_nome}" />
</p:column>
<p:column styleClass="TexAlCenter">
<h:outputText value="#{p.uf_sigla}" />
</p:column>
</p:autoComplete>
Mas em minha classe Pessoa, não possuo os campos CPF/CNPJ, Nome do Muncípio e UF.
Então criei uma classe PessoaDTO:
@Immutable
@Data
@EqualsAndHashCode(callSuper = false, of = {"id"})
public class PessoaDTO {
private Integer id;
private Integer empresa_codigo;
private String cnpjcpf;
private String nome;
private String cidade_nome;
private String uf_sigla;
}
Faço uma nativeQuery e utilizo ResultTransformer para carregar as informações.
Passo a ter uma lista seja em um autoComplete ou selectOneMenu do tipo PessoaDTO, mas na maioria dos lugares eu associo a seleção de um item na lista diretamente com uma propriedade do tipo Pessoa.
Qual seria uma boa prática para se resolver esta situação?
- Ter um converter de PessoaDTO para Pessoa?
- Não trabalhar com o DTO e utilizar alguma outra forma para exibir as informações?
Obrigado desde já.