vRaptor + Hibernate não conecta no MySQL

2 respostas
B

Bom Dia,
Estou seguindo a apostila da Caelum FJ-28, estava funcionando tudo normal, depois do exercicio que pede pra Anotar os métodos do ProdutosController nada funciona mais,
quando eu escolho Listar os produtos ele traz a lista em branco não da erro nem nada. Coloquei System.out.println(""); para ver se chegava até o metodo da lista e chega normal,

o Mesmo acontece quando tento Inserir novo Produto, porem quando chega na linha se salvar o produto ele da erro

Aqui esta o hibernate.cfg.xml

<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<property name="hibernate.connection.username">root</property>
		<property name="hibernate.connection.password">m4x7e7w9</property>
		<property name="hibernate.connection.url">jdbc:mysql://localhost/compras</property>
		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="hibernate.connection.autocommit">true</property>
		<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
		<property name="hibernate.hbm2ddl.auto">update</property>
		<property name="hibernate.show_sql">true</property>
		<property name="hibernate.format_sql">true</property>
		<mapping class="br.com.projeto.compras.modelo.Produto" />
	</session-factory>
</hibernate-configuration>

e aqui o erro que aparece quando mando salvar

26/05/2010 11:13:20 org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: an exception was raised while executing resource method
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:86)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:77)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:42)
	at br.com.caelum.vraptor.core.InstantiatedInterceptorHandler.execute(InstantiatedInterceptorHandler.java:47)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.InterceptorListPriorToExecutionExtractor.intercept(InterceptorListPriorToExecutionExtractor.java:46)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:80)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:67)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
	at br.com.caelum.vraptor.core.DefaultRequestExecution.execute(DefaultRequestExecution.java:70)
	at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:56)
	at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
Caused by: org.hibernate.MappingException: Unknown entity: br.com.projeto.compras.modelo.Produto
	at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:580)
	at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1365)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)
	at br.com.projeto.compras.dao.ProdutoDao.salva(ProdutoDao.java:34)
	at br.com.projeto.compras.controller.ProdutosController.adiciona(ProdutosController.java:91)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:57)
	... 37 more

e aqui o metodo Adiciona

@Post @Path("/produtos")
	public void adiciona(Produto produto){
		System.out.println("passou");	
		if (produto.getNome() == null || produto.getNome().length() < 3){
			validator.add(new ValidationMessage("Nome é obrigatório e precisa ter mais de 3 letras", "produto.nome"));
		}
		if  (produto.getDescricao() == null || produto.getDescricao().length() > 40){
			validator.add(new ValidationMessage("Descrição Obrigatória e nao pode ter mais que 40 letras!", "produto.descricao"));
		}
		if  (produto.getPreco() == null || produto.getPreco() <= 0){
			validator.add(new ValidationMessage("Preço precisa ser positivo", "produto.preco"));
		}
		System.out.println("nao passou");
		validator.onErrorUse(Results.page()).of(ProdutosController.class).formulario();

		dao.salva(produto);
		System.out.println("adicionou");
		
		result.redirectTo(ProdutosController.class).lista();
	}

e o metodo salva

public void salva(Produto produto) {
		Transaction tx = session.beginTransaction();
		System.out.println("Entrou salva");
		session.save(produto);
		System.out.println("Salvou salva");
		tx.commit();
	}

na lista session.save(produto) ocorre o erro citado acima

Desde já Agradeço

2 Respostas

Lucas_Cavalcanti

a classe br.com.projeto.compras.modelo.Produto existe? o pacote está correto? ela está anotada com javax.persistence.Entity?

o que vc tá usando pra criar a Session? o CriadorDeSessionFactory da apostila?

o hibernate.cfg.xml tah no classpath? (dentro de alguma pasta src)

vc tem algum hibernate.properties no projeto?

B

Opa, Não me atentei aos imports
tava dando import do org.hibernate.annotations.Entity;
alterei e deu certo,

Obrigado,

Criado 26 de maio de 2010
Ultima resposta 26 de mai. de 2010
Respostas 2
Participantes 2