Problema com distinct

Tenho um progama que roda web e funciona normal sem o distinct mas quando coloco o distinct na query o progama retorna o erro java.lang.String cannot be cast to VO.Usuario

O metodo no dao com o distinct

 public List<Usuario> listarVara() {

        Query dynaQuery = getConexao().createQuery("SELECT DISTINCT (u.vara) FROM Usuario u");
        return dynaQuery.getResultList();
 }
public class UsuarioMB {
    
private Usuario usuario;
private List<Usuario> usuarios;
private List<SelectItem> selectItems;
/** Creates a new instance of UsuarioMB */
 



public UsuarioMB(){ 
            
    this.usuario=new Usuario();

    fillSelectItems();
    }

    public Usuario getUsuario() {
        return usuario;
    }

     public List<Usuario> getUsuarios() {
        return usuarios;
    }

    public List<SelectItem> getSelectItems() {
        return selectItems;
    }

    public void setSelectItems(List<SelectItem> selectItems) {
        this.selectItems = selectItems;
    }
    public void setUsuarios(List<Usuario> usuarios) {
        this.usuarios = usuarios;
    }
    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }
    
    public String excluir() {
        UsuarioDAO uDAO = new UsuarioDAO();
        try {
            uDAO.deletar(usuario);
            JSFUtil.setaMensagemInfo("Exclusão efetuada com sucesso");
//            listar();

        } catch (Exception ex) {
            JSFUtil.setaMensagemInfo("Erro na exclusão: " + ex.getMessage());

        }
        return null;

    }
    public String limpar() {
        usuario = new Usuario();
        
        return null;
    }
  
    public String listar(){
    UsuarioDAO uDAO = new UsuarioDAO();

    usuarios=uDAO.listar();
    uDAO.getConexao().close();
    return "listar";
}
    public String buscar(){

    return "buscar";
}
    
public String cadastrar(){
UsuarioDAO uDAO=new UsuarioDAO();
        
       
        
  if (usuario.getNomeUsuario().equals(""))
{
  usuario.setNomeUsuario(null);
}
   try 
{
   uDAO.inserirEditar(usuario);
   limpar();
   JSFUtil.setaMensagemInfo("Cadastro/Edição efetuado com sucesso!");
        
   uDAO.getConexao().close();
}
   catch (Exception e) {
   JSFUtil.setaMensagemError("Erro no cadastro: "+e.getMessage());
   uDAO.getConexao().getTransaction().rollback();
}
        return null;
}
public String entrar(){
         
         return "entrar";
         
}
      
 private  void fillSelectItems() {
  
             UsuarioDAO uDAO = new UsuarioDAO();

       selectItems = new ArrayList<SelectItem>();

       selectItems.add(new SelectItem(null, "[SELECIONE]"));
        for (Usuario u : uDAO.listarVara()) {

            selectItems.add(new SelectItem(u.getVara(),u.getVara()));
            
        }
}
           
}

A exception [quote]

javax.servlet.ServletException: Cant instantiate class: MB.UsuarioMB… java.lang.String cannot be cast to VO.Usuario
javax.faces.webapp.FacesServlet.service(FacesServlet.java:256)
org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)[/quote]
A stacktrace completa …
[list]08/08/2012 16:17:52 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/SIAP] threw exception [Cant instantiate class: MB.UsuarioMB… java.lang.String cannot be cast to VO.Usuario] with root cause
java.lang.ClassCastException: java.lang.String cannot be cast to VO.Usuario
at MB.UsuarioMB.fillSelectItems(UsuarioMB.java:127)
at MB.UsuarioMB.(UsuarioMB.java:34)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.sun.faces.config.ManagedBeanFactoryImpl.newInstance(ManagedBeanFactoryImpl.java:277)
at com.sun.faces.application.ApplicationAssociate.createAndMaybeStoreManagedBeans(ApplicationAssociate.java:546)
at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:82)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:72)
at org.apache.el.parser.AstValue.getValue(AstValue.java:147)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:106)
at javax.faces.component.UISelectItems.getValue(UISelectItems.java:130)
at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:323)
at com.sun.faces.renderkit.html_basic.MenuRenderer.getOptionNumber(MenuRenderer.java:675)
at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:793)
at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:335)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:836)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:896)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:137)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892)
at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245)
at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176)
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:393)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:309)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
[/list]

Como fazer o distinct funcionar ?
Utilizo jpa 1.0 com jsf 1.2 …
A explicação da página http://www.objectdb.com/java/jpa/query/jpql/select#SELECT_DISTINCT_ não me ajudou pois montei igual e não rodou … será que alguem pode ajudar ?

Fala ae, Matheus!
O correto não seria utilizar apenas “SELECT DISTINCT u FROM Usuario u”?
Dá uma olhada neste link e veja se te ajuda em algo: http://docs.oracle.com/html/E24396_01/ejb3_langref.html
té+

Você tentou trocar de SELECT DISTINCT (u.vara) FROM Usuario u para SELECT DISTINCT (vara) AS vara FROM Usuario?

Dá erro …

Ele funciona mas não funciona o distinct continua trazendo os campos repetidos …
Se eu fizer sem o distict … funciona da mesma forma … trazendo assim os campos repetidos …
Realmente não sei o que é …

Eu pensei que você queria fazer algo como:

SELECT * FROM USUARIO WHERE VARA IN (SELECT DISTINCT VARA FROM USUARIO)

Mas isso não faz sentido, porque você continua a listar todos os usuários.

Você quer só listar o conjunto de varas? Nesse caso,o conjunto de varas distintas é uma lista de Strings, não de usuários.

entanglement
eu quero retornar o campo vara na tabela usuario …

Certo. Então é uma lista de Strings, não uma lista de usuários.

Resolvi …

  [code] select DISTINCT(u.vara) FROM Usuario u  order by u.vara[/code]

Funcionou beleza …