Pessoal, nao consigo acertar esse negócio de sessão,.
Deem uma olhada no meu DAO, o que estou fazendo de errado ??
public class MeuDAO {
private static final SessionFactory factory;
static{
Configuration cfg = new AnnotationConfiguration().configure();
factory = cfg.buildSessionFactory();
}
public void save(Object value) throws Exception {
//Session session = factory.openSession();
Session session = getSession();
Transaction t = session.beginTransaction();
try{
session.saveOrUpdate(value);
t.commit();
}catch (Exception e){
System.out.println( "NANSOFT: " + e.getMessage() );
t.rollback();
}
session.close();
}
public void delete(Object o) throws Exception{
Session session = factory.openSession();
Transaction t = session.beginTransaction();
try{
session.delete(o);
t.commit();
}catch (Exception e){
System.out.println( e.getMessage() );
t.rollback();
}
session.close();
}
public Criteria createCriteria(Class classe){
Session session = factory.openSession();
// Session session = getSession();
Criteria c = session.createCriteria(classe);
// session.close();
return c;
}
public void closeSession() {
Session sessao = getSession();
sessao.close();
}
/**
* Classe MinhaClasse.java
*/
public List<MinhaClasse> getMinhaClasse(){
return createCriteria(MinhaClasse.class).list();
}
/**
* Controle de Sessão
*/
public static SessionFactory getFactory() {
return factory;
}
public Session getSession() {
return getFactory().openSession();
}
}
Quando tento excluir um objeto (registro) de MinhaClasse, da essa excessão:
Illegal attempt to associate a collection with two open sessions
essa classe tem Collection! será que tem algo com isso ?
Por favor, ajudem !!