Select Max - erro

10 respostas
E

Pessoal, estou tentando fazer o select max, porem esta dando erro abaixo

Caused by: java.lang.ClassCastException: java.lang.Integer cannot be cast to [Ljava.lang.Object;

at br.uniplan.servico.planouni.CadguiaServico.salvarobjeto(CadguiaServico.java:48)

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:5388)

at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)

at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:800)
List<Object> objectList = dao.seq_cadguia();

                Iterator iterator = objectList.iterator();
                
                Integer sequencia_guia = 0;
                
                while(iterator.hasNext()){
                    Object []obj = (Object[])iterator.next();
                    sequencia_guia =(Integer) obj[0];
                    
                }   


********************************************
    @Interceptors({GerenciaTransacaoInterceptor.class})  
    public List<Object> seq_cadguia() {    
        try {      
            
            String query = "select max(c.codguia + 1) as codguia from Cadguia c ";                            
            return (List<Object>) emAux.createQuery(query).getResultList();            
        }
        catch (Throwable ex) {             
                System.err.println("failed.----" + ex);  
                throw new ExceptionInInitializerError(ex);  
        }  
    }

10 Respostas

alessandronarciso

Experimenta tirar o “+1” do select

E

mesmo erro alessandro

F

Veja oq retorna do emAux.createQuery(query).getResultList() e olha o cast q vc faz

natanaelv

Parece que sua consulta retorna somente um Integer, já que um Select Max,
e você está tentando fazer casting para um List.

alexandre.marques

Cara, tenta usar o GROUP BY na sua query, pois você está usando uma função de agregação e obrigatóriamente você precisa agrupar o resultado.

E

pq o group by alexandre ???

F

Vc viu oq eu falei ?

Veja o tipo de dado q está retornando do emAux.createQuery(query).getResultList();
Use o debug pra ver, depois olhe o cast ( List ) q vc ta fazendo

E

vi sim e vou testar, é que uma das respostas nao tinha entendido o fato de usar group by, vou testar e dou um feedback

abc

alexandre.marques

Cara, quando você usa função de agregação você precisa agrupa as informações, mais no seu caso não será necessário pois você está trazendo no seu select somente um campo…

O problema está aqui

você quer converter um objeto em um outro objeto??? :?:

E

Entao alexandre, quero converter esse objeto para Inteiro, pois preciso ter a informacao, do ultimo registro +1

Obrigado

Criado 15 de abril de 2013
Ultima resposta 17 de abr. de 2013
Respostas 10
Participantes 5