[size=18]Galera Obrigado Problema Resolvido[/size]
Oi galera sou novo com hibernate e estou com um problema no meu sistema.
consigo cadastrar novos registros mas quando mando alterar recebo a mensagem de erro abaixo.
ERRO - illegal attempt to associate a collection with two open sessions
segue abaixo o codigo
[code]package hibernate;
import org.hibernate.cfg.AnnotationConfiguration;
import org.hibernate.SessionFactory;
public class HibernateUtil {
private static final SessionFactory sessionFactory;
static {
try {
sessionFactory = new AnnotationConfiguration().configure("config/hibernate.cfg.xml").buildSessionFactory();
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
[/code]
[code]<?xml version="1.0" encoding="UTF-8"?>
org.hibernate.dialect.MySQLDialect com.mysql.jdbc.Driver jdbc:mysql://localhost:3306/transporteescolar root al1206<mapping class="modelo.Aluno"/>
<mapping class="modelo.Fornecedor"/>
<mapping class="modelo.Colegio"/>
<mapping class="modelo.Carro"/>
<mapping class="modelo.ContasAPagar"/>
<mapping class="modelo.Endereco"/>
<mapping class="modelo.ItemNota"/>
<mapping class="modelo.Itinerario"/>
<mapping class="modelo.Mensalidade"/>
<mapping class="modelo.NotaFiscal"/>
<mapping class="modelo.ReceitaDespesa"/>
<mapping class="modelo.Responsavel"/>
<mapping class="modelo.TelefoneAluno"/>
<mapping class="modelo.TelefoneResponsavel"/>
<mapping class="modelo.TelefoneColegio"/>
<mapping class="modelo.TelefoneFornecedor"/>
<mapping class="modelo.Usuario"/>
[/code]
[code]package control;
import java.util.*;
import modelo.Carro;
import persistence.CarroDao;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
public class ManterCarro {
private Carro carro;
private List<Carro> dados = new ArrayList();
private boolean listaVazia = true;
private CarroDao cd = new CarroDao();
public ManterCarro() {
carro = new Carro();
try {
listaVazia = (cd.listarAtivo().isEmpty()) ? true : false;
} catch (Exception ex) {
ex.printStackTrace();
}
}
public Carro getCarro() {
return carro;
}
public void setCarro(Carro carro) {
this.carro = carro;
}
public List<Carro> getDados() {
try {
if (cd.listarAtivo().isEmpty()) {
listaVazia = true;
} else {
listaVazia = false;
dados = cd.listarAtivo();
}
} catch (Exception e) {
e.printStackTrace();
}
return dados;
}
public void setDados(List<Carro> dados) {
this.dados = dados;
}
public boolean isListaVazia() {
return listaVazia;
}
public void setListaVazia(boolean listaVazia) {
this.listaVazia = listaVazia;
}
public void cadastrar() {
FacesContext context = FacesContext.getCurrentInstance();
String mensagem = "";
try {
carro.setAtivo(true);
cd.salvar(carro);
dados.add(carro);
carro = new Carro();
listaVazia = false;
mensagem = "Carro cadastrado com sucesso!";
FacesMessage message = new FacesMessage(mensagem);
context.addMessage("formulario", message);
} catch (Exception exp) {
mensagem = "Erro: " + exp.getMessage();
FacesMessage message = new FacesMessage(mensagem);
context.addMessage("formulario", message);
}
}
public void limpar() {
carro = new Carro();
}
public void excluir(ActionEvent event) throws Exception {
FacesContext context = FacesContext.getCurrentInstance();
String mensagem = "";
UIParameter parameter = (UIParameter) event.getComponent().
findComponent("itemdel");
Carro c = (Carro) parameter.getValue();
try {
c.setAtivo(false);
dados.remove(c);
cd.alterar(c);
if (dados.isEmpty())
listaVazia = true;
mensagem = "Carro excluido com sucesso!";
FacesMessage message = new FacesMessage(mensagem);
context.addMessage("listagemcarros", message);
} catch (Exception exc) {
mensagem = "Erro: " + exc.getMessage();
FacesMessage message = new FacesMessage(mensagem);
context.addMessage("listagemcarros", message);
}
}
}[/code]
[code]package persistence;
import org.hibernate.;
import java.util.;
import modelo.Carro;
import hibernate.HibernateUtil;
public class CarroDao {
Session s;
Transaction t;
Query q;
public CarroDao() {
}
public void salvar(Carro u) throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
t = s.beginTransaction();
s.save(u);
t.commit();
}
public void alterar(Carro u) throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
t = s.beginTransaction();
s.update(u);
t.commit();
}
public void apagar(Carro u) throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
t = s.beginTransaction();
s.delete(u);
t.commit();
}
public Carro listarUm(Integer id) throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
q = s.createQuery("from Carro where id = " + id);
return (Carro) q.uniqueResult();
}
public List<Carro> listar() throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
q = s.createQuery("from Carro");
return q.list();
}
public List<Carro> listarAtivo() throws Exception{
s = HibernateUtil.getSessionFactory().openSession();
q = s.createQuery("from Carro where ativo = true");
return q.list();
}
}
[/code]
Sera que alguem pode me ajudar?