Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203

    collection ritorno di valori duplicati

    Buongiorno a tutti ragazzi, ho un piccolo problema, devo stampare a video dei dati presenti in un db, sono riuscito a riprendermi i dati e a farli stampare ma praticamente non mi stampa tutti i dati presenti nel db ma mi stampa due risultati ripetuti per n volte vi faccio un esempio:

    ad esempio se i dati presenti nel db sono:
    pippo
    pluto
    paperino
    ironman
    ciccio
    pasticcio

    e la mia applicazione mi stampa all'interno di una tabella:
    pippo
    pippo
    pippo
    pippo
    ciccio
    ciccio

    da cosa potreebbe essere dovuto questo errore?

    vi posto il codice della mia jsp e della servlet

    jsp

    codice:
     
    <%
        Iterator i =(Iterator)request.getAttribute("elencoCodMazz");
           VRicercaAggrCodMazzetto codMazz = new VRicercaAggrCodMazzetto();
              int x = 0;
                  while(i.hasNext()){
                    codMazz =(VRicercaAggrCodMazzetto)i.next();
    %>
        <tr id="tr_collection">
            <td id="td_collection"> <%= codMazz.getCode() %></td>
            <td id="td_collection"> <%= codMazz.getSiglavideo() %></td>
            <td id="td_collection"> <%= codMazz.getFrazionario() %></td>
            <td id="td_collection"> <%= codMazz.getStatus() %></td>
            <td id="td_collection"> <%= codMazz.getCreationDate() %></td>
            <td id="td_collection"> <%= codMazz.getScanDate() %></td>
            <td id="td_collection"> <%= codMazz.getCheckDate() %></td>
            <td id="td_collection"> <%= codMazz.getName() %></td>
         </tr>
    <% } %>
    e questa è la servlet:

    codice:
     
     try {
                String stringCode = (String) request.getParameter("code");
                List codMazz = controllerDao.findByCodeMazzetto(stringCode);
                    Iterator i = codMazz.iterator();
                        request.setAttribute("code", i);
                if (codMazz  != null) {
                    request.getRequestDispatcher("/code_mazz.jsp").forward(request, response);
                } else {
                    request.getRequestDispatcher("/error.jsp").forward(request, response);
                }
            }
    Andando in debug ho scoperto che già quando la richiesta arriva a :
    codice:
      Iterator i = frazMazz.iterator();
    i valori memorizzati all'interno di i sono duplicati ma il numero totale dei risultati è corretto.
    Da dove potrebbe essere il problema?
    Forse negli ejb e nella composizione della query?
    Vi ringrazio per l'aiuto che mi state dando

  2. #2
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    allora ho fatto una piccola modifica alla servlet e non mi duplica + i risultati ma mi restituisce solamente i risultati univoci(quelli che prima erano duplicati) allora ripropongo l'esempio:
    pippo
    pluto
    paperino
    ironman
    ciccio
    pasticcio

    e adesso mi restituisce

    pippo
    ciccio

    e basta

    La modifica è questa:

    codice:
     
    try {
                String stringFrazionario = (String) request.getParameter("frazionario");
                List frazMazz = controllerDao.findByFrazionarioMazzetto(stringFrazionario);
                Set setFrazMazz = new HashSet(frazMazz); 
                    Iterator i = setFrazMazz.iterator(); 
                        request.setAttribute("frazionario", i);
                    if (frazMazz  != null) {
                        request.getRequestDispatcher("/fraz_mazz.jsp").forward(request, response);
                    } else {
                        request.getRequestDispatcher("/error.jsp").forward(request, response);
                    }
            }
    RIpensandoci è giusto che mi restituisca solo 2 risultati perchè il controllo sui duplicati lo faccio nella servlet dopo che mi ritornano i dati, ma allora va fatto nel session bean in maniera che il controllo venga fatto a monte e alla servlet ritornino tutti i valori non duplicati?
    Posso far di ventare il metodo List in un metodo Set?

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2009
    Messaggi
    203
    ho modifica tutto in HashSet ma mi restituisce un classCastException

    codice:
     
    javax.ejb.EJBTransactionRolledbackException: java.util.ArrayList cannot be cast to java.util.HashSet
            at org.jboss.ejb3.tx.Ejb3TxPolicy.handleInCallerTx(Ejb3TxPolicy.java:115)
            at org.jboss.aspects.tx.TxPolicy.invokeInCallerTx(TxPolicy.java:130)
            at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:194)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptorv2.invoke(RoleBasedAuthorizationInterceptorv2.java:201)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:176)
            at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:216)
            at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
            at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
            at $Proxy661.findMazzByFrazionario(Unknown Source)
            at it.poste.tool.persistence.controller.ControllerDao.findByFrazionarioMazzetto(ControllerDao.java:76)
            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.jboss.aop.joinpoint.MethodInvocation.invokeTarget(MethodInvocation.java:122)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:111)
            at org.jboss.ejb3.EJBContainerInvocationWrapper.invokeNext(EJBContainerInvocationWrapper.java:69)
            at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.invoke(InterceptorSequencer.java:73)
    
            at org.jboss.ejb3.interceptors.aop.InterceptorSequencer.aroundInvoke(InterceptorSequencer.java:59)
            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.jboss.aop.advice.PerJoinpointAdvice.invoke(PerJoinpointAdvice.java:174)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.fillMethod(InvocationContextInterceptor.java:72)
            at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_fillMethod_31053739.invoke(InvocationContextInterceptor_z_fillMethod_31053739.java)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor.setup(InvocationContextInterceptor.java:88)
            at org.jboss.aop.advice.org.jboss.ejb3.interceptors.aop.InvocationContextInterceptor_z_setup_31053739.invoke(InvocationContextInterceptor_z_setup_31053739.java)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionInterceptor.java:62)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.entity.TransactionScopedEntityManagerInterceptor.invoke(TransactionScopedEntityManagerInterceptor.java:56)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.AllowedOperationsInterceptor.invoke(AllowedOperationsInterceptor.java:47)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.stateless.StatelessInstanceInterceptor.invoke(StatelessInstanceInterceptor.java:68)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.aspects.tx.TxPolicy.invokeInOurTx(TxPolicy.java:79)
            at org.jboss.aspects.tx.TxInterceptor$Required.invoke(TxInterceptor.java:190)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.aspects.tx.TxPropagationInterceptor.invoke(TxPropagationInterceptor.java:76)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.tx.NullInterceptor.invoke(NullInterceptor.java:42)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.security.RoleBasedAuthorizationInterceptorv2.invoke(RoleBasedAuthorizationInterceptorv2.java:201)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.security.Ejb3AuthenticationInterceptorv2.invoke(Ejb3AuthenticationInterceptorv2.java:186)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.ENCPropagationInterceptor.invoke(ENCPropagationInterceptor.java:41)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.BlockContainerShutdownInterceptor.invoke(BlockContainerShutdownInterceptor.java:67)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.aspects.currentinvocation.CurrentInvocationInterceptor.invoke(CurrentInvocationInterceptor.java:67)
            at org.jboss.aop.joinpoint.MethodInvocation.invokeNext(MethodInvocation.java:102)
            at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:176)
            at org.jboss.ejb3.session.SessionSpecContainer.invoke(SessionSpecContainer.java:216)
            at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:207)
            at org.jboss.ejb3.proxy.impl.handler.session.SessionProxyInvocationHandlerBase.invoke(SessionProxyInvocationHandlerBase.java:164)
            at $Proxy672.findByFrazionarioMazzetto(Unknown Source)
            at it.poste.tool.servlet.findby.FindByFrazMazzetto_srv.processRequest(FindByFrazMazzetto_srv.java:30)
            at it.poste.tool.servlet.findby.FindByFrazMazzetto_srv.doGet(FindByFrazMazzetto_srv.java:55)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
            at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
            at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
            at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
            at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
            at java.lang.Thread.run(Thread.java:619)
    Caused by: java.lang.ClassCastException: java.util.ArrayList cannot be cast to java.util.HashSet
            at it.poste.tool.persistence.session.VRicercaAggrCodMazzettoFacade.findMazzByFrazionario(VRicercaAggrCodMazzettoFacade.java:57)
    Questo è il metodo che ho modificato, naturalmente ho modificato il tipo anche nella servlet:
    codice:
     public HashSet<VRicercaAggrCodMazzetto> findMazzByFrazionario(String frazionario) {
            Query q = em.createQuery("SELECT m FROM VRicercaAggrCodMazzetto m WHERE m.frazionario =:frazionario");
                q.setParameter("frazionario", frazionario);
                    return (HashSet<VRicercaAggrCodMazzetto>) q.getResultList();
        }

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.