Inclusão com Hibernate 4

13 respostas
anderson.bonavides

O que há de errado no código que não da erro, não lança exceção e os dados não são inseridos?

public void incluir(T arg0) throws Exception, SQLException{

		Session session = HibernateUtility.getSession();
		Transaction transaction = HibernateUtility.getTransaction();

		try {
			session.beginTransaction();
			session.saveOrUpdate(arg0);
			session.flush();
			transaction.commit();

		} catch (HibernateException e) {

			System.out.println("Erro na inserção :" + e.getMessage());
			throw e;

		}

	}

13 Respostas

Hebert_Coelho

Você debugou para ver se está passando aí?

anderson.bonavides

Sim finaliza o método direitinho como se tivesse inserido. “sem erros”.

Hebert_Coelho

Você não deveria fazer commit pela session? eu não entendo muito de hiberante puro, mas pelo menos imagino que seja assim.

anderson.bonavides

fiz tanto pela session quanto pela transaction mas não colocou os dados dentro banco.

wagnerfrancisco

Esta HibernateUtility é uma classe que você criou? Tenho a impressão de que você está usando transações diferentes. Quando você chama o método beginTransaction ele retorna uma transação. Tenta assim:

Session session = HibernateUtility.getSession();
Transaction tx;
try {
   tx = session.beginTransaction();
   session.saveOrUpdate(arg0);
   session.flush();
   tx.commit();
} catch (HibernateException e) {
   if (tx != null) {
      tx.rollback();
   }
   System.out.println("Erro na inserção :" + e.getMessage());
   throw e;
} finally {
   session.close(); //se vc quiser fechar aqui...
}
Hebert_Coelho

wagnerfrancisco:
Esta HibernateUtility é uma classe que você criou? Tenho a impressão de que você está usando transações diferentes. Quando você chama o método beginTransaction ele retorna uma transação. Tenta assim:

Session session = HibernateUtility.getSession(); Transaction tx; try { tx = session.beginTransaction(); session.saveOrUpdate(arg0); session.flush(); tx.commit(); } catch (HibernateException e) { if (tx != null) { tx.rollback(); } System.out.println("Erro na inserção :" + e.getMessage()); throw e; } finally { session.close(); //se vc quiser fechar aqui... }

É oq eu imaginei também, mas não sabia aplicar ao Hibernate. :lol: :lol: :lol:

Um dia vou aprender mexer nesse trem.

drsmachado

Verdade, veja se a Transaction é a mesma

drsmachado

Pow Hebert, manja de JPA, mas não de hibernate?
É bem simples, aliás, muito mais que JPA, no meu entender…

Hebert_Coelho

drsmachado:
Pow Hebert, manja de JPA, mas não de hibernate?
É bem simples, aliás, muito mais que JPA, no meu entender…
A parte de transação, não mesmo.

Sempre me atinei ao JPA puro, pois foi o que sempre utilizei com o JBoss. =/

Mas prometo um dia estudar Hibernate puro e te deixar orgulhoso! O.o

MAhuahhahuaa

drsmachado

Hebert Coelho:
drsmachado:
Pow Hebert, manja de JPA, mas não de hibernate?
É bem simples, aliás, muito mais que JPA, no meu entender…
A parte de transação, não mesmo.

Sempre me atinei ao JPA puro, pois foi o que sempre utilizei com o JBoss. =/

Mas prometo um dia estudar Hibernate puro e te deixar orgulhoso! O.o

MAhuahhahuaa


Que nada camarada, um dia você vai dominar o mundo!!!

anderson.bonavides

Houve realmente confusão na hora de abrir a transação e da o commit, mas tu do se deu pois já fazem mais de 2 anos q eu não utilizava hibernate nem JPA ai não prestei a tenção ao detalhe.

drsmachado

Camarada, isso é normal. todo mundo se confunde…

wagnerfrancisco

Hebert Coelho:
wagnerfrancisco:
Esta HibernateUtility é uma classe que você criou? Tenho a impressão de que você está usando transações diferentes. Quando você chama o método beginTransaction ele retorna uma transação. Tenta assim:

Session session = HibernateUtility.getSession(); Transaction tx; try { tx = session.beginTransaction(); session.saveOrUpdate(arg0); session.flush(); tx.commit(); } catch (HibernateException e) { if (tx != null) { tx.rollback(); } System.out.println("Erro na inserção :" + e.getMessage()); throw e; } finally { session.close(); //se vc quiser fechar aqui... }

É oq eu imaginei também, mas não sabia aplicar ao Hibernate. :lol: :lol: :lol:

Um dia vou aprender mexer nesse trem.

E eu trabalhei pouquíssimas vezes com JPA. Sempre uso Hibernate direto. :smiley:

Criado 11 de dezembro de 2012
Ultima resposta 11 de dez. de 2012
Respostas 13
Participantes 4