Problema com "two open sessions"

5 respostas
A

não entendo por que está dando o erro:

08/04/2012 19:22:46 com.sun.faces.application.ActionListenerImpl processAction
GRAVE: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
javax.faces.el.EvaluationException: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIData.broadcast(UIData.java:915)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
	at org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java:410)
	at org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java:43)
	at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101)
	at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:61)
	at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55)
	at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java:123)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:293)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:223)
	at org.hibernate.event.def.DefaultUpdateEventListener.performSaveOrUpdate(DefaultUpdateEventListener.java:33)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
	at org.hibernate.impl.SessionImpl.fireUpdate(SessionImpl.java:564)
	at org.hibernate.impl.SessionImpl.update(SessionImpl.java:552)
	at org.hibernate.impl.SessionImpl.update(SessionImpl.java:544)
	at br.com.techsquare.dao.PostDAOImp.update(PostDAOImp.java:63)
	at br.com.techsquare.controller.PostController.verPost(PostController.java:67)
	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.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 55 more
08/04/2012 19:22:46 com.sun.faces.lifecycle.InvokeApplicationPhase execute
AVISO: #{postController.verPost}: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
javax.faces.FacesException: #{postController.verPost}: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	at javax.faces.component.UIData.broadcast(UIData.java:915)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:787)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1252)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:312)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:343)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:177)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:188)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:355)
	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:149)
	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:304)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
Caused by: javax.faces.el.EvaluationException: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 54 more
Caused by: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
	at org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java:410)
	at org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java:43)
	at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101)
	at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:61)
	at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55)
	at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java:123)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:293)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:223)
	at org.hibernate.event.def.DefaultUpdateEventListener.performSaveOrUpdate(DefaultUpdateEventListener.java:33)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
	at org.hibernate.impl.SessionImpl.fireUpdate(SessionImpl.java:564)
	at org.hibernate.impl.SessionImpl.update(SessionImpl.java:552)
	at org.hibernate.impl.SessionImpl.update(SessionImpl.java:544)
	at br.com.techsquare.dao.PostDAOImp.update(PostDAOImp.java:63)
	at br.com.techsquare.controller.PostController.verPost(PostController.java:67)
	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.apache.el.parser.AstValue.invoke(AstValue.java:262)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	... 55 more
tenho uma classe modelo chamada post:
@Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private Long id;
    private String titulo;
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dtcadastro;
    private String resumo;
    private String imagem;
    private String texto;
    private int cliques;
    
    @OneToMany(mappedBy = "post")
    private List<Comentario> comentarios;
    
    @ManyToOne
    private Categoria categoria;
    
    @ManyToOne
    private Usuario usuario;

e meu postcontroller ta assim:

package br.com.techsquare.controller;

import br.com.techsquare.dao.*;
import br.com.techsquare.modelo.Categoria;
import br.com.techsquare.modelo.Comentario;
import br.com.techsquare.modelo.Post;
import br.com.techsquare.util.FTPUtil;
import br.com.techsquare.util.Mensagens;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.primefaces.event.FileUploadEvent;

/**
 *
 * @author Alan
 */
@ManagedBean
@SessionScoped
public class PostController {

    private Post post;
    private Comentario comentario;
    private PostDAO dao = new PostDAOImp();
    private Mensagens msg = new Mensagens();
    private ComentarioDAO comentDAO = new ComentarioDAOImp();
    private List<Categoria> categorias;
    private List<Post> posts;
    private CategoriaDAO catDao = new CategoriaDAOImp();
    private PostDAO postDao = new PostDAOImp();
    private String imagemNome = "http://j2diniz.com/techsquare/img/post/padraoUsr.jpg";

    public PostController() {
//        if (categorias == null) {
//            categorias = new ArrayList<Categoria>();
//            categorias = catDao.list();
//        }
//        if (posts == null) {
//            posts = new ArrayList<Post>();
//            posts = postDao.list();
//        }
//        if (post == null) {
//            post = new Post();
//        }
    }

    public void inserirComentario() {
        comentario.setDtcadastro(new Date());
        comentario.setPost(post);
        comentDAO.save(comentario);
        comentario = new Comentario();
        this.post = dao.getPostId(post.getId());
    }

    public String enviarPost() {
        post = new Post();
        return "enviar-post.xhtml";
    }

    public String verPost() {
        if (post != null) {
            System.out.println("entro no if - obs.: somente teste !");
            post.setCliques(post.getCliques() + 1);
            postDao.update(post);
        }

        comentario = new Comentario();
        return "abre-post.xhtml";
    }

    public void fileUploadAction(FileUploadEvent event) throws IOException {
        String imagemNomeEnviar = "" + new Date().getMonth() + "" + new Date().getDay() + "" + new Date().getHours() + event.getFile().getFileName();
        imagemNome = "http://j2diniz.com/techsquare/img/post/" + imagemNomeEnviar;
        byte[] foto = event.getFile().getContents();
        FTPUtil util = new FTPUtil();
        util.enviar(foto, "post", imagemNomeEnviar);
    }

    public void salvarPost() {
        try {
            UsuarioController uc = new UsuarioController();
            post.setUsuario(uc.getUsuario());
            post.setDtcadastro(new Date());
            post.setImagem(imagemNome);
            dao.save(post);
            msg.enviar(msg.POST_OK);
            post = new Post();
            imagemNome = "http://j2diniz.com/techsquare/img/post/padraoUsr.jpg";
        } catch (Exception e) {
            msg.enviar(msg.ERRO_SISTEMA);
        }
    }

   //obs.: retirei os outros getters and setters, deixei apenas este abaixo pois ele eu modifiquei..
    
    public List<Post> getPosts() {
        posts = postDao.list();
        return posts;
    }


}

e na minha visão eu tenho um código assim:



5 Respostas

O

coloque o codigo da classe br.com.techsquare.dao.PostDAOImp

A

segue a classe

package br.com.techsquare.dao;

import br.com.techsquare.modelo.Post;
import br.com.techsquare.util.HibernateUtil;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Expression;

/**
 *
 * @author Alan
 */
public class PostDAOImp implements PostDAO {

    @Override
    public void save(Post post) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.save(post);
        t.commit();
    }

    @Override
    public Post getPostId(Long id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        return (Post) session.load(Post.class, id);
    }

    @Override
    public Post getPostCategoria(Long id) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        Criteria c = session.createCriteria(Post.class);
        c.add(Expression.eq("id", id));
        Post post = (Post) c.uniqueResult();
        return post;
    }

    @Override
    public List<Post> list() {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        List lista = session.createQuery("from Post").list();
        t.commit();
        return lista;
    }

    @Override
    public void remove(Post post) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.delete(post);
        t.commit();
    }

    @Override
    public void update(Post post) {
        Session session = HibernateUtil.getSessionFactory().openSession();
        Transaction t = session.beginTransaction();
        session.update(post);
        t.commit();
    }
}
O

a linha:

Session session = HibernateUtil.getSessionFactory().openSession();

cria uma nova sessão com o banco de dados, porem a mesma não é fechada ao fim do método.

Ou você finaliza a sessao com o método close() (que pode lhe causar alguns problemas com Lazy Loading) ou substitui

Session session = HibernateUtil.getSessionFactory().openSession();

por

Session session = HibernateUtil.getSessionFactory().getCurrentSession();
A

hmm entendi…

esse “modelo de projeto” eu aprendi vendo vários tutoriais, usando o mesmo modelo…

e com a classe hibernate util

public class HibernateUtil {

    private static SessionFactory sessionFactory;

    public HibernateUtil() {
    }

    public static SessionFactory getSessionFactory() {

        if (sessionFactory == null) {
            try {
                AnnotationConfiguration ac = new AnnotationConfiguration();
                //adicionar todas as classes aqui
                //TODO  VERIFICAR HibernateUtil quando adicionar classe nova
                ac.addAnnotatedClass(Categoria.class);
                ac.addAnnotatedClass(Comentario.class);
                ac.addAnnotatedClass(Post.class);
                ac.addAnnotatedClass(Usuario.class);                
                sessionFactory = ac.configure().buildSessionFactory();
                
                //exportar schema;
           //     SchemaExport export = new SchemaExport(ac);
           //    export.create(true, true);
                
            } catch (Throwable ex) {
                System.err.println("Initial SessionFactory creation failed." + ex);
                throw new ExceptionInInitializerError(ex);
            }
            return sessionFactory;
        } else {
            return sessionFactory;
        }
    }
}

eu posso mudar de open session pra get current session em todas as DAOImp?

O

sim, se a sessao nao existir o proprio hibernate cuida de cria-la

Criado 8 de abril de 2012
Ultima resposta 8 de abr. de 2012
Respostas 5
Participantes 2