Ajuda jsf + hibernate

1 resposta
M

Boa tarde. estou tendo um problema com minha aplicação web. tenho a classe ordemdeservico a classe itensdeservico e a classe tipodeservico qndo mando adicionar algum serviço a minha ordem de servico me da um erro..

Meu Bean

package br.com.projeto.controller;

import java.util.ArrayList;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.projeto.beans.Funcionario;
import br.com.projeto.beans.ItensDeServico;
import br.com.projeto.beans.OrdemDeServico;
import br.com.projeto.beans.Pessoa;
import br.com.projeto.beans.TipoDeServico;
import br.com.projeto.dao.HibernateDao;

@ManagedBean
@SessionScoped
public class OrdemDeServicoBean implements InterfaceController {

	private Funcionario funcionario = new Funcionario();
	private Pessoa pessoa = new Pessoa();
	private List<ItensDeServico> itensDeServico = new ArrayList<ItensDeServico>();
	private ItensDeServico itenDeServico = new ItensDeServico();
	private OrdemDeServico ordemDeServico = new OrdemDeServico();
	private TipoDeServico tipoDeServico = new TipoDeServico();
	private Integer quantidade = 0;
	private float subtotal = 0;
	
	@Override
	public void salvar() {
		try {			
			
			FacesContext context = FacesContext.getCurrentInstance();
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			ordemDeServico.setPessoa(pessoa);
			ordemDeServico.setItensDeServico(itensDeServico); 
			ordemDeServico.setFuncionario(funcionario);
			hibernateDao.salvar(ordemDeServico);
			ordemDeServico = new OrdemDeServico();	
			funcionario = new Funcionario();
			pessoa = new Pessoa();
			itensDeServico = new ArrayList<ItensDeServico>();
			itenDeServico = new ItensDeServico();
			tipoDeServico = new TipoDeServico();			
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Ordem De Servico Adicionada"));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(
					FacesMessage.SEVERITY_ERROR, "Erro!", " " + e));
		}
	}

	@Override
	public void remove() {
		try {
			FacesContext context = FacesContext.getCurrentInstance();
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			Integer id = ordemDeServico.getIdOrdemDeServico();
			ordemDeServico = hibernateDao.getBean(id);
			hibernateDao.deletar(ordemDeServico);
			ordemDeServico = new OrdemDeServico();	
			funcionario = new Funcionario();
			pessoa = new Pessoa();
			itensDeServico = new ArrayList<ItensDeServico>();
			itenDeServico = new ItensDeServico();
			tipoDeServico = new TipoDeServico();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Ordem De Servico Excluida"));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", " " + e));
		}
	}

	@Override
	public String antesUpdate() {
		try {
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			Integer id = ordemDeServico.getIdOrdemDeServico();
			ordemDeServico = hibernateDao.getBean(id);
			funcionario = ordemDeServico.getFuncionario();
			pessoa = ordemDeServico.getPessoa();
			itensDeServico = ordemDeServico.getItensDeServico();		
			return "EditarOrdemDeServico";
		} catch (Exception e) {
			System.out.println("Erro " + e);
			return "Erro";
		} 
	}

	@Override
	public void update() {
		try {
			FacesContext context = FacesContext.getCurrentInstance();
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			hibernateDao.atualizar(ordemDeServico);
			ordemDeServico = new OrdemDeServico();	
			funcionario = new Funcionario();
			pessoa = new Pessoa();
			itensDeServico = new ArrayList<ItensDeServico>();
			itenDeServico = new ItensDeServico();
			tipoDeServico = new TipoDeServico();			
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Ordem De Servico Atualizada"));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", " " + e));
		}
	}

	public List<OrdemDeServico> getListOrdemDeServico() {
		List<OrdemDeServico> ordemDeServicos = new ArrayList<OrdemDeServico>();
		HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
		ordemDeServicos = hibernateDao.getBeans();		
		return ordemDeServicos;
		
	}

	public String selecionarPessoa(){
		try {
			HibernateDao<Pessoa> hibernateDao = new HibernateDao<Pessoa>(Pessoa.class);
			Integer id = pessoa.getIdPessoa();
			pessoa = hibernateDao.getBean(id);
			return "CadastroOrdemDeServico";
		} catch (Exception e) {
			System.out.println("Erro " + e);
			return "Erro.jsf";
		}
	}
	
	
	public String selecionarFuncionario(){
		try{
			HibernateDao<Funcionario> hibernateDao = new HibernateDao<Funcionario>(Funcionario.class);
			Integer id = funcionario.getIdFuncionario();
			funcionario = hibernateDao.getBean(id);
			return "CadastroOrdemDeServico";
		}catch(Exception e){
			System.out.println("Erro "+e);
			return "Erro.jsf";
		}
	}
	
	public String selecionarTiposDeServico(){
		HibernateDao<TipoDeServico> hibernateDao = new HibernateDao<TipoDeServico>(TipoDeServico.class);
		Integer id = tipoDeServico.getIdTipoDeServico();
		tipoDeServico = hibernateDao.getBean(id);		
		return "EditarOrdemDeServico";
	}
	

//AKI EU CHAMO PARA ADICIONAR O SERVICO
	
	public void adicionarServico(){	
		HibernateDao<TipoDeServico> hibernateDao = new HibernateDao<TipoDeServico>(TipoDeServico.class);
		Integer id = tipoDeServico.getIdTipoDeServico();
		tipoDeServico = hibernateDao.getBean(id);
		itenDeServico.setTipoDeServico(tipoDeServico);
		itenDeServico.setPessoa(pessoa);		
		itenDeServico.setQuantidade(quantidade);	
		itensDeServico.add(itenDeServico);		
	}

	
	public List<ItensDeServico> getListItensDeServico() {
		HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
		Integer id = ordemDeServico.getIdOrdemDeServico();
		ordemDeServico = hibernateDao.getBean(id);
		itensDeServico = ordemDeServico.getItensDeServico();		
		return itensDeServico;
		
	}
	
	//GAN
}

CLASSE ORDEM DE SERVICO

package br.com.projeto.controller;

import java.util.ArrayList;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import br.com.projeto.beans.Funcionario;
import br.com.projeto.beans.ItensDeServico;
import br.com.projeto.beans.OrdemDeServico;
import br.com.projeto.beans.Pessoa;
import br.com.projeto.beans.TipoDeServico;
import br.com.projeto.dao.HibernateDao;

@ManagedBean
@SessionScoped
public class OrdemDeServicoBean implements InterfaceController {

	private Funcionario funcionario = new Funcionario();
	private Pessoa pessoa = new Pessoa();
	private List<ItensDeServico> itensDeServico = new ArrayList<ItensDeServico>();
	private ItensDeServico itenDeServico = new ItensDeServico();
	private OrdemDeServico ordemDeServico = new OrdemDeServico();
	private TipoDeServico tipoDeServico = new TipoDeServico();
	private Integer quantidade = 0;
	private float subtotal = 0;
	
	@Override
	public void salvar() {
		try {			
			
			FacesContext context = FacesContext.getCurrentInstance();
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			ordemDeServico.setPessoa(pessoa);
			ordemDeServico.setItensDeServico(itensDeServico); 
			ordemDeServico.setFuncionario(funcionario);
			hibernateDao.salvar(ordemDeServico);
			ordemDeServico = new OrdemDeServico();	
			funcionario = new Funcionario();
			pessoa = new Pessoa();
			itensDeServico = new ArrayList<ItensDeServico>();
			itenDeServico = new ItensDeServico();
			tipoDeServico = new TipoDeServico();			
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Ordem De Servico Adicionada"));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(
					FacesMessage.SEVERITY_ERROR, "Erro!", " " + e));
		}
	}

	@Override
	public void remove() {
		try {
			FacesContext context = FacesContext.getCurrentInstance();
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			Integer id = ordemDeServico.getIdOrdemDeServico();
			ordemDeServico = hibernateDao.getBean(id);
			hibernateDao.deletar(ordemDeServico);
			ordemDeServico = new OrdemDeServico();	
			funcionario = new Funcionario();
			pessoa = new Pessoa();
			itensDeServico = new ArrayList<ItensDeServico>();
			itenDeServico = new ItensDeServico();
			tipoDeServico = new TipoDeServico();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Ordem De Servico Excluida"));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", " " + e));
		}
	}

	@Override
	public String antesUpdate() {
		try {
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			Integer id = ordemDeServico.getIdOrdemDeServico();
			ordemDeServico = hibernateDao.getBean(id);
			funcionario = ordemDeServico.getFuncionario();
			pessoa = ordemDeServico.getPessoa();
			itensDeServico = ordemDeServico.getItensDeServico();		
			return "EditarOrdemDeServico";
		} catch (Exception e) {
			System.out.println("Erro " + e);
			return "Erro";
		} 
	}

	@Override
	public void update() {
		try {
			FacesContext context = FacesContext.getCurrentInstance();
			HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
			hibernateDao.atualizar(ordemDeServico);
			ordemDeServico = new OrdemDeServico();	
			funcionario = new Funcionario();
			pessoa = new Pessoa();
			itensDeServico = new ArrayList<ItensDeServico>();
			itenDeServico = new ItensDeServico();
			tipoDeServico = new TipoDeServico();			
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Ordem De Servico Atualizada"));
		} catch (Exception e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", " " + e));
		}
	}

	public List<OrdemDeServico> getListOrdemDeServico() {
		List<OrdemDeServico> ordemDeServicos = new ArrayList<OrdemDeServico>();
		HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
		ordemDeServicos = hibernateDao.getBeans();		
		return ordemDeServicos;
		
	}

	public String selecionarPessoa(){
		try {
			HibernateDao<Pessoa> hibernateDao = new HibernateDao<Pessoa>(Pessoa.class);
			Integer id = pessoa.getIdPessoa();
			pessoa = hibernateDao.getBean(id);
			return "CadastroOrdemDeServico";
		} catch (Exception e) {
			System.out.println("Erro " + e);
			return "Erro.jsf";
		}
	}
	
	
	public String selecionarFuncionario(){
		try{
			HibernateDao<Funcionario> hibernateDao = new HibernateDao<Funcionario>(Funcionario.class);
			Integer id = funcionario.getIdFuncionario();
			funcionario = hibernateDao.getBean(id);
			return "CadastroOrdemDeServico";
		}catch(Exception e){
			System.out.println("Erro "+e);
			return "Erro.jsf";
		}
	}
	
	public String selecionarTiposDeServico(){
		HibernateDao<TipoDeServico> hibernateDao = new HibernateDao<TipoDeServico>(TipoDeServico.class);
		Integer id = tipoDeServico.getIdTipoDeServico();
		tipoDeServico = hibernateDao.getBean(id);		
		return "EditarOrdemDeServico";
	}
	
	
	public void adicionarServico(){	
		HibernateDao<TipoDeServico> hibernateDao = new HibernateDao<TipoDeServico>(TipoDeServico.class);
		Integer id = tipoDeServico.getIdTipoDeServico();
		tipoDeServico = hibernateDao.getBean(id);
		itenDeServico.setTipoDeServico(tipoDeServico);
		itenDeServico.setPessoa(pessoa);		
		itenDeServico.setQuantidade(quantidade);	
		itensDeServico.add(itenDeServico);		
	}

	
	public List<ItensDeServico> getListItensDeServico() {
		HibernateDao<OrdemDeServico> hibernateDao = new HibernateDao<OrdemDeServico>(OrdemDeServico.class);
		Integer id = ordemDeServico.getIdOrdemDeServico();
		ordemDeServico = hibernateDao.getBean(id);
		itensDeServico = ordemDeServico.getItensDeServico();		
		return itensDeServico;
		
	}

	//GAS

}

CLASSE ITEMDESERVICO

package br.com.projeto.beans;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

@Entity
public class ItensDeServico implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@Id
	@GeneratedValue
	private Integer idItensDeServico;
	private Integer quantidade;
	private Float subtotal;

	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "id_tipoDeServico")
	private TipoDeServico tipoDeServico;

	@ManyToOne(cascade = CascadeType.ALL)
	@JoinColumn(name = "id_pessoa")
	private Pessoa pessoa;

	//GAS

}

O ERRO

28391 [http-bio-8080-exec-10] ERROR org.hibernate.LazyInitializationException - failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205)
	at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297)
	at br.com.projeto.controller.OrdemDeServicoBean.adicionarServico(OrdemDeServicoBean.java:160)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	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:508)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	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:185)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
	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.Http11Processor.process(Http11Processor.java:269)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Nov 16, 2011 2:45:57 PM com.sun.faces.application.ActionListenerImpl processAction
Grave: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
javax.faces.el.EvaluationException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
	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.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:508)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	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:185)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
	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.Http11Processor.process(Http11Processor.java:269)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205)
	at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297)
	at br.com.projeto.controller.OrdemDeServicoBean.adicionarServico(OrdemDeServicoBean.java:160)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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)
	... 24 more

Nov 16, 2011 2:45:57 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute
Advertência: #{ordemDeServicoBean.adicionarServico}: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
javax.faces.FacesException: #{ordemDeServicoBean.adicionarServico}: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:118)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	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:508)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	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:185)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
	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.Http11Processor.process(Http11Processor.java:269)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.EvaluationException: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:102)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	... 23 more
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205)
	at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297)
	at br.com.projeto.controller.OrdemDeServicoBean.adicionarServico(OrdemDeServicoBean.java:160)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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)
	... 24 more

Nov 16, 2011 2:45:57 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/Projeto_Faculdade] threw exception [org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed] with root cause
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.projeto.beans.OrdemDeServico.itensDeServico, no session or session was closed
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
	at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
	at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
	at org.hibernate.collection.AbstractPersistentCollection.write(AbstractPersistentCollection.java:205)
	at org.hibernate.collection.PersistentBag.add(PersistentBag.java:297)
	at br.com.projeto.controller.OrdemDeServicoBean.adicionarServico(OrdemDeServicoBean.java:160)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	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)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:315)
	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:508)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	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:185)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:151)
	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.Http11Processor.process(Http11Processor.java:269)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

ALGUEM PDE ME AJUDA?

1 Resposta

vinnysoft

Boa Noite!

Cara tenta minimizar seu post, ta dificil de ler ^^!

O erro é que sua sessão foi fechada antes de o hibernate poder fazer o lazy loading.

Soluções:

  1. Mais fácil e rápido: Coloca EAGER (fetch = FetchType.EAGER) no @ManyToOne do atributo TipoDeServido da classe ItensDeServico.
  2. Melhor: Deixa a conexão aberta enquanto precisar do Lazy Loading (fetch = FetchType.LAZY) e faça consultas usando join Fetch.

Até +!

Criado 16 de novembro de 2011
Ultima resposta 16 de nov. de 2011
Respostas 1
Participantes 2