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
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)</blockquote> 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 ?