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á.