Olá pessoal se alguém puder dar uma força já estou a um bom tempo com esse problema, modifiquei o meu DAO mas não deu em nada, pois não gera erro, mas no meu servlet retorna que gravou corretamente.
Grato.
Olá pessoal se alguém puder dar uma força já estou a um bom tempo com esse problema, modifiquei o meu DAO mas não deu em nada, pois não gera erro, mas no meu servlet retorna que gravou corretamente.
Grato.
[code]public class SetorDao implements Serializable {
private Session session;
//Transaction tx= null;
public Setor insert(Setor setor) {
Setor s = null;
try {
session = HibernateUtil.getFactory().getCurrentSession();
//session=HibernateUtil.getSession();
session.beginTransaction();
//tx=(Transaction) session.beginTransaction();
session.save(setor);
HibernateUtil.getFactory().getCurrentSession().getTransaction().commit();
//tx.commit();
//session.flush();
session.close();
s = setor;
} catch (Exception he) {
System.out.println(he);
}
return s;
}
esse é o meu HibernateUtil:
public class HibernateUtil {
private static SessionFactory factory;
static {
try {
factory = new AnnotationConfiguration().configure().buildSessionFactory();
// factory.openSession();
// System.out.println(factory.);
System.out.println(factory.getCurrentSession());
} catch (Exception e) {
e.printStackTrace();
factory = null;
}
}
public static SessionFactory getFactory() {
return factory;
}
public static Session getSession() {
return factory.openSession();
}
}
[quote=Boby][code]public class SetorDao implements Serializable {
private Session session;
//Transaction tx= null;
public Setor insert(Setor setor) {
Setor s = null;
try {
session = HibernateUtil.getFactory().getCurrentSession();
//session=HibernateUtil.getSession();
session.beginTransaction();
//tx=(Transaction) session.beginTransaction();
session.save(setor);
HibernateUtil.getFactory().getCurrentSession().getTransaction().commit();
//tx.commit();
//session.flush();
session.close();
s = setor;
} catch (Exception he) {
System.out.println(he);
}
return s;
}[/code][/quote]
Seu commit() esta comentado.
Outra coisa, coloca entre as tag code o seu codigo
mesmo tirando não grava, esse foi a última tentativa que achei mas não tive sucesso.
Tente mudar:
System.out.println(he);
Para:
he.printStackTrace();
E veja se ajuda…
O problema é que não da erro, essa mudança já fiz.
Repare o seguinte, na implementação do seu HibernateUtil, você esta abrindo uma nova session a cada chamada p/ o método
public static Session getSession() {
return factory.openSession();
}
Por tanto, quando faz o commit na linha a baixo não a nada a ser commitado pois trata-se de uma outra Session, mas não a erros também, por isso não tem nada no seu log
HibernateUtil.getFactory().getCurrentSession().getTransaction().commit();
Eu aconselho você copiar uma implementação de HibernateUtil que utilize ThreadLocal em primeiro lugar como essa
Mas só p/ comprovar o que lhe disse mude seu Dao p/ o seguinte:
public Setor insert(Setor setor) {
Setor s = null;
try {
session = HibernateUtil.getFactory().getCurrentSession();
Transaction tx = session.beginTransaction();
session.save(setor);
tx.commit();
session.close();
s = setor;
} catch (Exception he) {
he.printStackTrace();
}
return s;
}
Good Luck!