JPA + GlassFish 2 + Netbeans 6.5

Pessoal,

Eu tinha uma aplicação que rodava no Tomcat. Migrei para o GlassFish (e também do netbeans 6 para o 6.5).
Estou com um problemão. Quando insiro/deleto/atualizo um registro numa tabela (a operação funciona e atualiza o BD) , depois se tento ler o registro
dá o seguinte erro:

StandardWrapperValve[pesquisagrupopergServlet]: PWC1406: Servlet.service() for servlet pesquisagrupopergServlet threw exception
java.lang.NumberFormatException: For input string: ""
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:468)
        at java.lang.Integer.parseInt(Integer.java:497)
        at Servlets.pesquisaGrupoPergServlet.service(pesquisaGrupoPergServlet.java:146)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
        at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:317)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:198)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:288)
        at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:150)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:571)
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1080)
        at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:272)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:637)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:568)
        at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:813)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
        at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
        at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:265)
        at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)

O engraçado é que se reinicio o GlassFish ele lê normalmente o registro.
Alguém pode me ajudar?

Muito obrigado pela atenção,

Bem pessoal,

O erro está nesta parte do código e eu creio que tem a ver com controle de transações:

        if (funcao.equals("atualiza_grupos")) {
            String pesquisa_id = request.getParameter("pesquisa_id");
            int pesquisaint = Integer.parseInt(pesquisa_id.trim());
            transaction.begin();
            Query query = em.createQuery("Delete from Pesquisagrupoperg p where p.pesquisagrupopergPK.pesquisaid = :pesquisa_id");
            query.setParameter("pesquisa_id", pesquisaint);
            int linhas = query.executeUpdate();
            transaction.commit();
            String grupo_id_st = request.getParameter("grupo_id");
            String matriz_grupo[] = grupo_id_st.split(",");
            int tamanho = matriz_grupo.length;
            int grupo_id = 0;
            for (int i = 0; i < tamanho; i++) {
                grupo_id = Integer.parseInt(matriz_grupo[i].trim());
                //System.err.println(matriz_grupo[i]);
                pesquisagrupoPK = new PesquisagrupopergPK();
                pesquisagrupo = new Pesquisagrupoperg();
                pesquisagrupoPK.setGrupoPerguntasId(grupo_id);
                pesquisagrupoPK.setPesquisaid(pesquisaint);
                pesquisagrupo.setPesquisagrupopergPK(pesquisagrupoPK);
                em.persist(pesquisagrupo);
                try {
                    em.getTransaction().begin();
                    em.getTransaction().commit();
                } catch (Exception e) {
                    System.err.println("Erro :" + e.getMessage());
                }
           }
        }

Alguém consegue ver o erro?

Obrigado,

Se alguém tiver o mesmo erro:

Troquei o Hibernate por TopLink e funcionou.
Vai saber…