Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23

Discussione: class cast exception

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203

    class cast exception

    ciao a tutti ragazzi
    ho un nuovo problemino devo prendere dei dai inseriti in un form fare una verifica nel db e farmi restituire i risultati ma al momento che vado a cliccare il pulsante per la ricerca, l'applicativo mi lancia questa eccezione:

    Codice PHP:
    Caused byjava.lang.ClassCastExceptionjava.util.Vector cannot be cast to entities.VRicercaAggrCodDispaccio 
    questo è lo stacktrace:

    Codice PHP:
    javax.ejb.TransactionRolledbackLocalExceptionException thrown from bean
            at com
    .sun.ejb.containers.BaseContainer.checkExceptionClientTx(BaseContainer.java:4926)
            
    at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4761)
            
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1955)
            
    at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1906)
            
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:198)
            
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
            
    at $Proxy251.findByCode(Unknown Source)
            
    at controller.ControllerDao.findByCodeDispaccio(ControllerDao.java:75)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            
    at java.lang.reflect.Method.invoke(Method.java:597)
            
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
            
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
            
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5243)
            
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:615)
            
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
            
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:567)
            
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:157)
            
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:139)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            
    at java.lang.reflect.Method.invoke(Method.java:597)
            
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:858)
            
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
            
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:367)
            
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5215)
            
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)
            
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:190)
            
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:84)
            
    at $Proxy255.findByCodeDispaccio(Unknown Source)
            
    at servlet_findBy.findByCodeDispaccio.processRequest(findByCodeDispaccio.java:30)
            
    at servlet_findBy.findByCodeDispaccio.doGet(findByCodeDispaccio.java:54)
            
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:734)
            
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
            
    at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1523)
            
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
            
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:188)
            
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:641)
            
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:97)
            
    at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:85)
            
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:185)
            
    at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:332)
            
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:233)
            
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:165)
            
    at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:791)
            
    at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:693)
            
    at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:954)
            
    at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:170)
            
    at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:135)
            
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:102)
            
    at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:88)
            
    at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:76)
            
    at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:53)
            
    at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:57)
            
    at com.sun.grizzly.ContextTask.run(ContextTask.java:69)
            
    at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:330)
            
    at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:309)
            
    at java.lang.Thread.run(Thread.java:619)
    Caused byjava.lang.ClassCastExceptionjava.util.Vector cannot be cast to entities.VRicercaAggrCodDispaccio
            at session
    .VRicercaAggrCodDispaccioFacade.findByCode(VRicercaAggrCodDispaccioFacade.java:41)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            
    at java.lang.reflect.Method.invoke(Method.java:597)
            
    at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
            
    at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
            
    at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5243)
            
    at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:615)
            
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
            
    at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:567)
            
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:157)
            
    at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:139)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
            
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
            
    at java.lang.reflect.Method.invoke(Method.java:597)
            
    at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:858)
            
    at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:797)
            
    at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:367)
            
    at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5215)
            
    at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5203)
            
    at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:190)
            ... 
    55 more 
    mi lancia l'eccezione in questo metodo:
    Codice PHP:
    public VRicercaAggrCodDispaccio findByCode(String code){
            
    Query q em.createQuery("SELECT d FROM VRicercaAggrCodDispaccio d WHERE d.code = :code");
            
    q.setParameter("code"code);
                return  (
    VRicercaAggrCodDispaccioq.getResultList();   //L'eccezione la da qua
        

    Ma se non faccio quel cast me lo segnala come errore.
    Questa è la servlet:
    Codice PHP:
    VRicercaAggrCodDispaccio codDisp = new VRicercaAggrCodDispaccio();
                
    //String code = new String();
                
    codDisp controllerDao.findByCodeDispaccio("code");
                    
    codDisp.setCode("code");
                
    request.setAttribute("code"codDisp);
                    if(
    codDisp != null) {
                        
    request.getRequestDispatcher("/lista_aggr_cod_disp.jsp").forward(requestresponse);
                    } else {
                        
    request.getRequestDispatcher("/error.jsp").forward(requestresponse);
                    } 
    e questo è il metodo del controller che viene chiamato dalla servlet:
    Codice PHP:
     public VRicercaAggrCodDispaccio findByCodeDispaccio(String code) {
            return 
    vRicercaAggrCodDispaccioFacade.findByCode("code");
        } 
    Vi ringrazio anticipatamente per il vostro prezioso aiuto

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: class cast exception

    Originariamente inviato da n1o
    Codice PHP:
    Caused byjava.lang.ClassCastExceptionjava.util.Vector cannot be cast to entities.VRicercaAggrCodDispaccio 
    Codice PHP:
        return  (VRicercaAggrCodDispaccioq.getResultList();   //L'eccezione la da qua 
    A me pare abbastanza "lampante". getResultList() restituisce un java.util.Vector. Il gestore/esecutore della query istanzia all'interno un Vector e basta, che non può pertanto essere di certo un VRicercaAggrCodDispaccio .... qualunque cosa sia per te un VRicercaAggrCodDispaccio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    mi da lo stesso errore anche senza .getResultlist();

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da n1o
    mi da lo stesso errore anche senza .getResultlist();
    Ripeto che dovunque, un oggetto istanziato come java.util.Vector non può essere (ovviamente) convertito in un VRicercaAggrCodDispaccio .... qualunque cosa sia per te un VRicercaAggrCodDispaccio.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Non capisco qual è il tuo problema...
    Il getResultList restituisce una List. Non ti basta castare quella?
    Che intendi quando dici che se togli il getResultList ti da' ancora errore? :master:
    "Na' sedia te vojo tirà!"

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    Codice PHP:
    public VRicercaAggrCodDispaccio findByCode(String code){
            
    Query q em.createQuery("SELECT d FROM VRicercaAggrCodDispaccio d WHERE d.code = :code");
            
    q.setParameter("code"code);
                return  (
    VRicercaAggrCodDispaccioq;   //L'eccezione la da qua
        

    Non capisco perchè mi da questo errore in questo punto, il metodo è di tipo VRicercaAggrCodDispaccio(String code), ovunque lo richiamo così.
    VRicercaAggrCodDispaccio è un metodo degli entities che rappresenta la vista nel dbed è:

    Codice PHP:
    package entities;

    import java.io.Serializable;
    import java.util.Date;
    import javax.persistence.Basic;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.NamedQueries;
    import javax.persistence.NamedQuery;
    import javax.persistence.Table;
    import javax.persistence.Temporal;
    import javax.persistence.TemporalType;

    /**
     *
     * @author 
     */
    @Entity
    @Table(name "V_RICERCA_AGGR_COD_DISPACCIO")
    @
    NamedQueries({
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findAll"query "SELECT v FROM VRicercaAggrCodDispaccio v"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findByCode"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.code = :code"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findBySiglavideo"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.siglavideo = :siglavideo"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findByFrazionario"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.frazionario = :frazionario"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findByStatus"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.status = :status"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findByCreationDate"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.creationDate = :creationDate"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findByScanDate"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.scanDate = :scanDate"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findByCheckDate"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.checkDate = :checkDate"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findByName"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.name = :name"),
        @
    NamedQuery(name "VRicercaAggrCodDispaccio.findById"query "SELECT v FROM VRicercaAggrCodDispaccio v WHERE v.id = :id")})
    public class 
    VRicercaAggrCodDispaccio implements Serializable {
        private static final 
    long serialVersionUID 1L;
        @
    Basic(optional false)
        @
    Column(name "CODE")
        private 
    String code;
        @
    Basic(optional false)
        @
    Column(name "SIGLAVIDEO")
        private 
    String siglavideo;
        @
    Column(name "FRAZIONARIO")
        private 
    String frazionario;
        @
    Basic(optional false)
        @
    Column(name "STATUS")
        private 
    char status;
        @
    Basic(optional false)
        @
    Column(name "CREATION_DATE")
        @
    Temporal(TemporalType.TIMESTAMP)
        private 
    Date creationDate;
        @
    Column(name "SCAN_DATE")
        @
    Temporal(TemporalType.TIMESTAMP)
        private 
    Date scanDate;
        @
    Column(name "CHECK_DATE")
        @
    Temporal(TemporalType.TIMESTAMP)
        private 
    Date checkDate;
        @
    Basic(optional false)
        @
    Column(name "NAME")
        private 
    String name;
        @
    Basic(optional false)
        @
    Column(name "ID")
        @
    Id
        
    private long id;

        public 
    VRicercaAggrCodDispaccio() {
        }

        public 
    String getCode() {
            return 
    code;
        }

        public 
    void setCode(String code) {
            
    this.code code;
        }

        public 
    String getSiglavideo() {
            return 
    siglavideo;
        }

        public 
    void setSiglavideo(String siglavideo) {
            
    this.siglavideo siglavideo;
        }

        public 
    String getFrazionario() {
            return 
    frazionario;
        }

        public 
    void setFrazionario(String frazionario) {
            
    this.frazionario frazionario;
        }

        public 
    char getStatus() {
            return 
    status;
        }

        public 
    void setStatus(char status) {
            
    this.status status;
        }

        public 
    Date getCreationDate() {
            return 
    creationDate;
        }

        public 
    void setCreationDate(Date creationDate) {
            
    this.creationDate creationDate;
        }

        public 
    Date getScanDate() {
            return 
    scanDate;
        }

        public 
    void setScanDate(Date scanDate) {
            
    this.scanDate scanDate;
        }

        public 
    Date getCheckDate() {
            return 
    checkDate;
        }

        public 
    void setCheckDate(Date checkDate) {
            
    this.checkDate checkDate;
        }

        public 
    String getName() {
            return 
    name;
        }

        public 
    void setName(String name) {
            
    this.name name;
        }

        public 
    long getId() {
            return 
    id;
        }

        public 
    void setId(long id) {
            
    this.id id;
        }

    Le altre porzioni di codice le ho scritte sopra.
    Non capisco perchè mi da questo errore

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da n1o
    Codice PHP:
    public VRicercaAggrCodDispaccio findByCode(String code){
            
    Query q em.createQuery("SELECT d FROM VRicercaAggrCodDispaccio d WHERE d.code = :code");
            
    q.setParameter("code"code);
                return  (
    VRicercaAggrCodDispaccioq;   //L'eccezione la da qua
        

    Qui non sarebbe una eccezione .... non dovrebbe proprio nemmeno compilare!!!

    Siamo daccordo che VRicercaAggrCodDispaccio è una tua normalissima classe che estende Object (non c'è extends infatti) e implementa semplicemente in più Serializable??

    E siamo daccordo che il compilatore non dovrebbe nemmeno permettere di fare un cast da un Query (che è sicuramente tutt'altra cosa) a un VRicercaAggrCodDispaccio che non ha nessuna relazione con un xyz.Query??
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    public VRicercaAggrCodDispaccio findByCode(String code){
    Query q = em.createQuery("SELECT d FROM VRicercaAggrCodDispaccio d WHERE d.code = :code");
    q.setParameter("code", code);
    return (VRicercaAggrCodDispaccio) q; //L'eccezione la da qua
    }
    Scusami, ma se q è di tipo query come pensi di castarla come VRicercaAggrCodDispaccio?

    Forse non sono stato chiaro precedentemente: non puoi provare così?


    codice:
    List result = q.getResultList();
    E poi ciclando result ti prendi i dati che ti servono per l'oggetto VRicercaAggrCodDispaccio?
    "Na' sedia te vojo tirà!"

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    facendo così
    codice:
     
    public VRicercaAggrCodDispaccio findByCode(String code){
            Query q = em.createQuery("SELECT d FROM VRicercaAggrCodDispaccio d WHERE d.code = :code");
            q.setParameter("code", code);
            List result = q.getResultList();
                return  result;
        }
    L'ide (netbeans) mi chiede sempre di castarlo a VRicercaAggrCodDispaccio
    Lo dovrei trattare come un list?
    Anche se il risultato è di una stringa solamente??

  10. #10
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da n1o
    facendo così
    codice:
     
    public VRicercaAggrCodDispaccio findByCode(String code){
            Query q = em.createQuery("SELECT d FROM VRicercaAggrCodDispaccio d WHERE d.code = :code");
            q.setParameter("code", code);
            List result = q.getResultList();
                return  result;
        }
    L'ide (netbeans) mi chiede sempre di castarlo a VRicercaAggrCodDispaccio
    Lo dovrei trattare come un list?
    Anche se il risultato è di una stringa solamente??
    No, il risultato è comunque 1 List (realmente un Vector da quanto si è visto) ..... che poi la collezione contenga solo 1 oggetto VRicercaAggrCodDispaccio è un altro discorso.

    E se vuoi fare: "se c'è 1 elemento, restituisco l'elemento, altrimenti restituisco null" lo puoi fare, quale è il dubbio?

    E tuttavia quando si usano questi framework di persistenza, oltre ad un metodo del tipo getResultList() generalmente forniscono anche un altro metodo che restituisce direttamente 1 oggetto che corrisponde alla query, del tipo es. uniqueResult() (questo su Hibernate ad esempio).
    Quindi verifica il javadoc della API che stai usando.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.