O Problema
Exibir apenas uma coluna de uma determinada entidade, por exemplo exibir o nome de uma pessoa.
A Solução
package br.unioeste.sgppls; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import javax.persistence.EntityManager; import org.jboss.seam.annotations.Name; @Name("ConverterEntityarConhecimento") @org.jboss.seam.annotations.faces.Converter public class ConverterEntityarConhecimento implements Converter { public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { try { EntityManager entityManager = (EntityManager) org.jboss.seam.Component .getInstance("entityManager", true); Object o = entityManager.createQuery( "from ArConhecimento ar WHERE ar.arCnhCodigo = :codigo") .setParameter("codigo", arg2).getSingleResult(); return o; } catch (Exception e) { throw new ConverterException(e); } } public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) { try { ArConhecimento a = (ArConhecimento) arg2; return a.getArCnhCodigo(); } catch (Exception e) { throw new ConverterException(e); } } }
A Visão
Meu campo input esta ligado diretamente com o atributo que é uma outra entidade, sendo assim é necessário usar o conversor para exibir a coluna de ‘descrição’
<h:inputText value="#{projetoHome.instance.arConhecimento}" id="text" size="15" converter="ConverterEntityarConhecimento" required="true"/>