Problemas com JPA e Hibernate

3 respostas
vcsmetallica

Salve galera,

Seguinte, estou usando trabalhando com JPA e hibernate. depois que abro um sessao esta dando o seguinte erro;

javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: could not execute query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74)
	at br.com.ces.persistencia.dao.impl.PerfilUsuarioDAO.findSgmvEntities(PerfilUsuarioDAO.java:48)
	at br.com.ces.persistencia.bo.UsuarioBO.buscaUsuario(UsuarioBO.java:18)
	at br.com.ces.persistencia.facade.UsuarioFacade.buscaUsuario(UsuarioFacade.java:16)
	at br.com.ces.servico.ValidaUsuarioServico.validarUsuario(ValidaUsuarioServico.java:29)
	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 flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:421)
	at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
	at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
	at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
	at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
	at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
	at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
	at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
	at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
	at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278)
	at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
	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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.exception.JDBCConnectionException: could not execute query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.doList(Loader.java:2223)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
	at org.hibernate.loader.Loader.list(Loader.java:2099)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65)
	... 32 more
Caused by: org.postgresql.util.PSQLException: Um erro de E/S ocorreu ao enviar para o processo servidor.
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:283)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
	at org.hibernate.loader.Loader.doQuery(Loader.java:674)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
	at org.hibernate.loader.Loader.doList(Loader.java:2220)
	... 40 more
Caused by: java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135)
	at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104)
	at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
	at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1620)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	... 48 more
br.com.ces.exception.TelemetriaException: javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: could not execute query
	at br.com.ces.persistencia.dao.impl.PerfilUsuarioDAO.findSgmvEntities(PerfilUsuarioDAO.java:51)
	at br.com.ces.persistencia.bo.UsuarioBO.buscaUsuario(UsuarioBO.java:18)
	at br.com.ces.persistencia.facade.UsuarioFacade.buscaUsuario(UsuarioFacade.java:16)
	at br.com.ces.servico.ValidaUsuarioServico.validarUsuario(ValidaUsuarioServico.java:29)
	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 flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:421)
	at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
	at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
	at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
	at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
	at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
	at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
	at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
	at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:146)
	at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278)
	at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
	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.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Thread.java:662)
Caused by: javax.persistence.PersistenceException: org.hibernate.exception.JDBCConnectionException: could not execute query
	at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74)
	at br.com.ces.persistencia.dao.impl.PerfilUsuarioDAO.findSgmvEntities(PerfilUsuarioDAO.java:48)
	... 31 more
Caused by: org.hibernate.exception.JDBCConnectionException: could not execute query
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
	at org.hibernate.loader.Loader.doList(Loader.java:2223)
	at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104)
	at org.hibernate.loader.Loader.list(Loader.java:2099)
	at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378)
	at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338)
	at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172)
	at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121)
	at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79)
	at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65)
	... 32 more
Caused by: org.postgresql.util.PSQLException: Um erro de E/S ocorreu ao enviar para o processo servidor.
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:283)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:367)
	at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:271)
	at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186)
	at org.hibernate.loader.Loader.getResultSet(Loader.java:1787)
	at org.hibernate.loader.Loader.doQuery(Loader.java:674)
	at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236)
	at org.hibernate.loader.Loader.doList(Loader.java:2220)
	... 40 more
Caused by: java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:135)
	at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:104)
	at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73)
	at org.postgresql.core.PGStream.ReceiveChar(PGStream.java:259)
	at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1620)
	at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
	... 48 more

Abixo os meu codigos e o persitence

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
  <persistence-unit name="ces_sgmv_webPU" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>br.com.ces.persistencia.modelo.SgmvCliente</class>
    <class>br.com.ces.persistencia.modelo.SgmvContato</class>
    <class>br.com.ces.persistencia.modelo.SgmvEndereco</class>
    <class>br.com.ces.persistencia.modelo.SgmvEquipamento</class>
    <class>br.com.ces.persistencia.modelo.SgmvFornecedor</class>
    <class>br.com.ces.persistencia.modelo.SgmvModelo</class>
    <class>br.com.ces.persistencia.modelo.SgmvMotorista</class>
    <class>br.com.ces.persistencia.modelo.SgmvPerfilUsuario</class>
    <class>br.com.ces.persistencia.modelo.SgmvTransmissao</class>
    <class>br.com.ces.persistencia.modelo.SgmvUsuario</class>
    <class>br.com.ces.persistencia.modelo.SgmvVeiculo</class>
    <properties>
      <property name="hibernate.connection.username" value="cessistemas"/>
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
      <property name="hibernate.connection.password" value="vcs27092007"/>
      <property name="hibernate.connection.url" value="jdbc:postgresql://pgsql.porta80.com.br:5432/cessistemas"/>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.connection.pool_size" value="16" /> 
      <property name="hibernate.connection.autoReconnect" value="true" /> 
      <property name="hibernate.generate_statistics" value="false" /> 
      <property name="hibernate.show_sql" value="true" /> 
      <property name="hibernate.use_sql_comments" value="false" /> 
      <property name="hibernate.hbm2ddl.auto" value="update" />
    </properties>
  </persistence-unit>
</persistence>

package br.com.ces.persistencia.dao;

import java.util.logging.Level;
import java.util.logging.Logger;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

/**
 *

 */
public class EntityManagerHelper {

    private static final EntityManagerFactory emf;
    private static final ThreadLocal<EntityManager> threadLocal;
    private static final Logger logger;

    static {
        emf = Persistence.createEntityManagerFactory("ces_sgmv_webPU");
        threadLocal = new ThreadLocal<EntityManager>();
        logger = Logger.getLogger("ces_sgmv_webPU");
        logger.setLevel(Level.ALL);
    }

    public static EntityManager getEntityManager() {
        EntityManager manager = threadLocal.get();
        if (manager == null || !manager.isOpen()) {
            manager = emf.createEntityManager();
            threadLocal.set(manager);
        }
        return manager;
    }

    public static void closeEntityManager() {
        EntityManager em = threadLocal.get();
        threadLocal.set(null);
        if (em != null) {
            em.close();
        }
    }

    public static void beginTransaction() {
        getEntityManager().getTransaction().begin();
    }

    public static void commit() {
        getEntityManager().getTransaction().commit();
    }

    public static void rollback() {
        getEntityManager().getTransaction().rollback();
    }

    public static Query createQuery(String query) {
        return getEntityManager().createQuery(query);
    }

    public static void log(String info, Level level, Throwable ex) {
        logger.log(level, info, ex);
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.ces.persistencia.dao;

import br.com.ces.exception.TelemetriaException;
import java.io.Serializable;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 */
public abstract class SgmvDAO<T> implements SgmvDAOI<T>,Serializable{

    /**
	 * 
	 */
	private static final long serialVersionUID = -6495047738543972115L;
	@SuppressWarnings("unchecked")
	private final Class objectClass;

    @SuppressWarnings("unchecked")
	public SgmvDAO(Class objectClass) {
        this.objectClass = objectClass;
    }

    public void salvar(T object) throws TelemetriaException {
        EntityManager em = null;
        try {
            em = EntityManagerHelper.getEntityManager();
            em.getTransaction().begin();
            em.persist(object);
            EntityManagerHelper.commit();
        } catch (Exception e) {
            throw new TelemetriaException(e);
        } finally {
            em.close();
        }

    }

    public void editar(T object) throws TelemetriaException {
        EntityManager em = null;
        try {
            em = EntityManagerHelper.getEntityManager();
            em.getTransaction().begin();
            em.merge(object);
            EntityManagerHelper.commit();
        } catch (Exception e) {
            throw new TelemetriaException(e);
        } finally {
            em.close();
        }
    }

    @SuppressWarnings("unchecked")
	public void excluir(Integer primaryKey) throws TelemetriaException {
        EntityManager em = null;
        try {
            em = EntityManagerHelper.getEntityManager();
            em.getTransaction().begin();
            T t = (T) em.getReference(objectClass, primaryKey);
            em.remove(t);
            EntityManagerHelper.commit();
        } catch (Exception e) {
            throw new TelemetriaException(e);
        } finally {
            em.close();
        }
    }

    public T findSgmvEntities(Integer primaryKey) throws TelemetriaException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    public List<T> findSgmvEntities() throws TelemetriaException {
         return findSgmvEntities(true, -1, -1);
    }

    public List<T> findSgmvEntities(int maxResults, int firstResult) throws TelemetriaException {
        return findSgmvEntities(false, maxResults, firstResult);
    }

    @SuppressWarnings("unchecked")
	public List<T> findSgmvEntities(boolean all, int maxResults, int firstResult) throws TelemetriaException {
        EntityManager em = null;
        try {
            em = EntityManagerHelper.getEntityManager();
            String hql = "select object(o) from "+objectClass.getName() +" as o";
            Query q = em.createQuery(hql);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } catch(Exception e){
            throw new TelemetriaException(e);
        }
    }

    public int getSgmvCount() throws TelemetriaException {
        throw new UnsupportedOperationException("Not supported yet.");
    }
}

Onde stou errando galera???

3 Respostas

vcsmetallica

Alguem???

R

eu acho que em algum momento sua aplicação esta fechando ou perdendo a conexão com o banco.

vcsmetallica

Entao, mas no meu persistence coloquei a tag

<property name="hibernate.connection.autoReconnect" value="true" />

Era para isso resolver!!!

Criado 30 de julho de 2011
Ultima resposta 1 de ago. de 2011
Respostas 3
Participantes 2