Opa…quando eu chamo o update, eu recebo o seguinte erro:
meu update e inicialização da classe está assim:
public GeralDAO(Class<T> classe) {
this.classe = classe;
logger.info("Setando sessão atual");
session = HibernateSessionFactory.getInstance().openSession();
logger.info("Setando transaction atual");
transaction = session.beginTransaction();
}
public void update(Object object) {
try
{
logger.info("Preparando para atualizar objeto: [ " + classe.getSimpleName() + " ]");
session.update(object);
transaction.commit();
logger.info("Objeto [ " + classe.getSimpleName() + " ] atualizado com sucesso");
} catch (Exception ex) {
logger.error("Erro ao atualizar objeto: [ " + classe.getSimpleName() + " ]", ex);
rollback();
} finally {
try {
if(session.isOpen()){
logger.error("Finalizando sessao");
//session.close();
}
} catch (HibernateException hex) {
logger.error("Erro ao finalizar sessao", hex);
}
}
}
e o meu HibernateSessionFactory, eu copiei do site roseindia.net
public class HibernateSessionFactory {
/**
* Construtor padrão.
*/
private HibernateSessionFactory() {
}
/**
* Localização do arquivo de configuração hibernate.cfg.xml
*/
private static String CONFIG_FILE_LOCATION = "/hibernate.cfg.xml";
/**
* Instância única de configuração do hibernate
*/
private static final Configuration cfg = new AnnotationConfiguration();
/**
* Instância única do hibernate SessionFactory
*/
private static org.hibernate.SessionFactory sessionFactory;
/**
* Inicializa a configuração caso ainda não tenha sido feita e retorna
* a atual instância
*
* @return Atual instância do SessionFactory
*/
public static SessionFactory getInstance() {
if (sessionFactory == null)
hibernateSessionFactory();
return sessionFactory;
}
/**
* Retorna a instância atual de Session e caso precise,
* ela é inicializada
*
* @return Session
* @throws HibernateException
*/
public Session openSession() {
return sessionFactory.getCurrentSession();
}
/**
* Obtém a session atual através do sessionFactory
*
* @return Session
*/
public Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
/**
* Inicializa a session factory de uma maneira segura.
*/
private static synchronized void hibernateSessionFactory() {
Logger log = Logger.getLogger(HibernateSessionFactory.class);
if (sessionFactory == null) {
try {
cfg.configure(CONFIG_FILE_LOCATION);
String sessionFactoryJndiName = cfg.getProperty(Environment.SESSION_FACTORY_NAME);
if (sessionFactoryJndiName != null) {
cfg.buildSessionFactory();
log.debug("get a jndi session factory");
sessionFactory = (SessionFactory) (new InitialContext()).lookup(sessionFactoryJndiName);
} else{
log.debug("classic factory");
sessionFactory = cfg.buildSessionFactory();
}
} catch (Exception e) {
System.err.println("%%%% Error Creating HibernateSessionFactory %%%%");
e.printStackTrace();
throw new HibernateException("Could not initialize the Hibernate configuration");
}
}
}
/**
* Fecha a sessionFactory
*/
public static void close(){
if (sessionFactory != null)
sessionFactory.close();
sessionFactory = null;
}
E a chamada para o update, eu faço no meu backing bean
public String salvarCarga(){
getEmpresaBean().getCargas().add(getCargaBean());
EmpresaDAO dao = new EmpresaDAO(br.com.ms.bean.empresa.EmpresaBean.class);
dao.update(getEmpresaBean());
FacesContext.getCurrentInstance().addMessage("formulario", new FacesMessage("Carga Cadastrada Com Sucesso"));
setDadosCarga(false);
setTabelaCargas(true);
return "tabelaCarga";
}
Alguém sabe o que to fazendo de errado?
[]'s