title: java.lang.ClassCastException: java.util.HashMap cannot be cast to ClassObject
body: <p>I have a problem with <code>&lt;p:dataTable&gt;</code> in PrimeFaces, I can not find the error.</p>
  
  <p><strong>Class UsuarioAsig:</strong></p>
  
  <pre><code>public class UsuarioAsig {
  
  private BigDecimal codigopersona;
  private String nombre;
  private String paterno;
  private String materno;
  private String login;
  private String observacion;
  private String tipocontrol;
  private String externo;
  private String habilitado;
  private String nombreperfil;
  private BigDecimal codigousuario;  ...get and set...}
  </code></pre>
  
  <p><strong>Class UsuarioAsigListaDataModel:</strong> </p>
  
  <pre><code>public class UsuarioAsigListaDataModel  extends ListDataModel&lt;UsuarioAsig&gt; implements SelectableDataModel&lt;UsuarioAsig&gt; {
  public UsuarioAsigListaDataModel(){}
  public UsuarioAsigListaDataModel(List&lt;UsuarioAsig&gt; data){super(data);}
  @Override
  public UsuarioAsig getRowData(String rowKey) {
      @SuppressWarnings("unchecked")
      List&lt;UsuarioAsig&gt; listaUsuarioAsigLectura = (List&lt;UsuarioAsig&gt;) getWrappedData();
      for (UsuarioAsig usuarioAsig : listaUsuarioAsigLectura) {
          if (usuarioAsig.getCodigopersona().equals(rowKey)) { return usuarioAsig; }
      }
      return null;
  }
  @Override
  public Object getRowKey(UsuarioAsig usuarioAsig) {
      return usuarioAsig.getCodigopersona();
  }}
  </code></pre>
  
  <p><strong>Controller UsuarioAsigController:</strong></p>
  
  <pre><code>@Controller("usuarioAsigController")
  @Scope(value = "session")
  public class UsuarioAsigController {
  
      private List&lt;UsuarioAsig&gt; listaUsuarioAsig;
      private HashMap&lt;String, Object&gt; selUsuarioAsig;
      private UsuarioAsigListaDataModel mediumUsuarioAsigModel;
      @Autowired
      UsuarioService usuarioService;
  
      ...
  
      public List&lt;UsuarioAsig&gt; getListaUsuarioAsig() {
          listaUsuarioAsig = usuarioService.selectAsig();
          return listaUsuarioAsig;
      }
  
      public void setListaUsuarioAsig(List&lt;UsuarioAsig&gt; listaUsuarioAsig) {
          this.listaUsuarioAsig = listaUsuarioAsig;
      }
  
      public void setMediumUsuarioAsigModel(UsuarioAsigListaDataModel mediumUsuarioAsigModel) {
          this.mediumUsuarioAsigModel = mediumUsuarioAsigModel;
      }
  
      public UsuarioAsigListaDataModel getMediumUsuarioAsigModel() {
          listaUsuarioAsig = usuarioService.selectAsig();
          mediumUsuarioAsigModel = new UsuarioAsigListaDataModel(listaUsuarioAsig);
          return mediumUsuarioAsigModel;
      }
  
      public void onRowSelect(SelectEvent event) {
          FacesMessage msg = new FacesMessage("Usuario seleccionado", ((UsuarioAsig) event.getObject()).getNombre());
          FacesContext.getCurrentInstance().addMessage(null, msg);
      }
  }
  </code></pre>
  
  <p>the error is generated when you click on one of the lines of datatable:</p>
  
  <p><strong>asiginst.xhtml:</strong></p>
  
  <pre><code>&lt;h:form id="form"&gt;
      &lt;p:growl id="msgs" showDetail="true" /&gt;
  
      &lt;p:dataTable id="usuarioAsigListaDataModel" var="usuarioAsig"
          value="#{usuarioAsigController.mediumUsuarioAsigModel}"
          rowKey="#{usuarioAsig.codigopersona}"
          selection="#{usuarioAsigController.selUsuarioAsig}"
          selectionMode="single" paginator="true" rows="10"&gt;
          &lt;p:ajax event="rowSelect"
              listener="#{usuarioAsigController.onRowSelect}"
              update=":form:msgs" /&gt;
          &lt;p:column headerText="Código" style="width:10%"&gt;#{usuarioAsig.codigopersona}&lt;/p:column&gt;
          &lt;p:column headerText="Nombre" style="width:32%"&gt;#{usuarioAsig.nombre}&lt;/p:column&gt;
          &lt;p:column headerText="Apellidos" style="width:32%"&gt;#{usuarioAsig.paterno} #{usuarioasig.materno}&lt;/p:column&gt;
          &lt;p:column headerText="Tipo Control" style="width:20%"&gt;#{usuarioAsig.tipocontrol}&lt;/p:column&gt;
          &lt;p:column headerText="Habilitado" style="width:6%"&gt;#{usuarioAsig.habilitado}&lt;/p:column&gt;
      &lt;/p:dataTable&gt;
  &lt;/h:form&gt;
  </code></pre>
  
  <h2>THE ERROR IS GENERATED:</h2>
  
  <pre><code>WARNING: asiginst.xhtml @51,103 listener="#{usuarioAsigController.onRowSelect}": java.lang.ClassCastException: java.util.HashMap cannot be cast to com.datos.entidades.qry.UsuarioAsig
  javax.el.ELException: asiginst.xhtml @51,103 listener="#{usuarioAsigController.onRowSelect}": java.lang.ClassCastException: java.util.HashMap cannot be cast to com.datos.entidades.qry.UsuarioAsig
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)
      at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processArgListener(AjaxBehaviorListenerImpl.java:69)
      at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:56)
      at org.primefaces.event.SelectEvent.processListener(SelectEvent.java:40)
      at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:102)
      at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:760)
      at javax.faces.component.UIData.broadcast(UIData.java:1071)
      at javax.faces.component.UIData.broadcast(UIData.java:1093)
      at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
      at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259)
      at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
      at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
      at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
      at javax.faces.webapp.FacesServlet.service(FacesServlet.java:409)
      at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
      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.runWorker(ThreadPoolExecutor.java:1110)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
      at java.lang.Thread.run(Thread.java:722)
  Caused by: java.lang.ClassCastException: java.util.HashMap cannot be cast to com.datos.entidades.qry.UsuarioAsig
      at com.controller.UsuarioAsigController.onRowSelect(UsuarioAsigController.java:217)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:601)
      at org.apache.el.parser.AstValue.invoke(AstValue.java:264)
      at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
      at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
      ... 29 more
  </code></pre>