[Erro] TransactionException: Transaction not successfully started

Estou tendo o seguinte erro ao executar o codigo abaixo:

	public void register(User user)
	{
		this.daoFactory.beginTransaction();
		UserDao userDao = this.daoFactory.getUserDao();
		
		if( !userDao.alreadyExist(user) )
		{
			userDao.persist(user);
		}
		daoFactory.commit(); // EXCEPTION É CAUSADA AKI
	}

org.hibernate.TransactionException: Transaction not successfully started org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:131) br.com.caelum.vraptor.util.hibernate.HibernateTransactionInterceptor.intercept(HibernateTransactionInterceptor.java:46) br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:41) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:46) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:48) br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:59) br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:62) br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:91) br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:55) br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:88)

Procurando na internet percebi q ele eh comum qdo se usa Hibernate + Spring Framework, mas nao consegui encontrar a solucao

alguém pode me ajudar?

não tem transação criada, debuga e ve se vc esta recebendo a session do hibernate.se vc tiver usando injeção de dependecias com o Spring,ele pode num ta injetando a session

Vision, sempre que você postar algum tópico pelo menos nos diga a versão do vraptor que está usando. Há hoje duas famílias: 2x e 3x que são completamente diferentes. Analisando pelo seu stacktrace noto que você usa vraptor 3x.

É bem difícil ajudar com seu problema, já que vocẽ não nos deu informação alguma sobre como estão suas daos, como você usa os componentes do hibernate, etc. Te falo sobre isso porque vocẽ pode usar tudo manual com alguma classe útil que contra o inicio e termino do Hibernate (muita gente usa aqui) ou então se você usa da forma automatica via Factory do Vraptor.

Dê uma olhada nessa página aqui e olhe como você pode usar o Hibernate ou JPA de forma transparente pelo Vraptor: http://vraptor.caelum.com.br/documentacao/componentes-utilitarios-opcionais/

[quote]Hibernate Session e SessionFactory

Já existe um Provider que adiciona esses três componentes opcionais. Você pode apenas registrá-lo no seu web.xml:

<context-param> <param-name>br.com.caelum.vraptor.provider</param-name> <param-value>br.com.caelum.vraptor.util.hibernate.HibernateCustomProvider</param-value> </context-param>[/quote]

Usando assim basta você colocar nas suas daos a Session do Hibernate e usa-la sem se preocupar com transação. Tudo será feito “automagicamente” pelo Vraptor. Dessa forma você nem mesmo precisará controlar as transações nem mesmo possuir uma DaoFactory, afinal, o Vraptor vai injetar tudo para você.

[code]@Component
public class UserDAO {
private Session session;

public class MyDAO(Session session) {
    this.session = session;
}

[...]

}[/code]