Criar session usando o hibernate+annotations[RESOLVIDO]

11 respostas
maior_abandonado

pessoal… to estudando o hibernate+annotations aqui…começando, estou com problemas pra criar a conexão e mapear no hibernate.cfg.xml o meu bean que contém as anotações…

vejam:

hibernate.cfg.xml, na pasta src no eclipse

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
                                         "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
 <session-factory name="">
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost/estudos</property>
  <property name="hibernate.connection.username">user</property>
  <property name="hibernate.connection.password">pass</property>
  <mapping class="br.com.iwts.estudos.beans.Livro"/>
 </session-factory>
</hibernate-configuration>

meu ConnectionFactory que criaria a sessão:

public class ConnectionFactory {
	
	private static final SessionFactory sessionFactory;
	private static final ThreadLocal<Session> threadLocal = 
		new ThreadLocal<Session>();
	
	static{
		try{
			sessionFactory = new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();
		}catch(Throwable e){
			System.out.println("antes");
			e.printStackTrace(); 
			System.out.println("depois");
			throw new ExceptionInInitializerError(e);
		}
	}
	
	public static Session getInstance(){
		Session session = threadLocal.get();
		session = sessionFactory.openSession();
		return session;
	}

}

e o bean com as anotações…

@Entity
@Table(name="livros")
@SuppressWarnings("serial")
public class Livro implements java.io.Serializable{
	
	private int idLivro;
	private String isbn;
	private String nomeLivro;
	private int ano;
	private int versao;
	private int idAutor;
	private String descricao;
		
	public Livro(int idLivro, String isbn, String nomeLivro, int ano,
			int versao, int idAutor, String descricao) {
		super();
		this.idLivro = idLivro;
		this.isbn = isbn;
		this.nomeLivro = nomeLivro;
		this.ano = ano;
		this.versao = versao;
		this.idAutor = idAutor;
		this.descricao = descricao;
	}	

	public Livro() {
		
	}

	@Id
	@Column(name="idLivro")
	public int getIdLivro() {
		return idLivro;
	}

	@Column(name="isbn")
	public String getIsbn() {
		return isbn;
	}

	@Column(name="nomeLivro")
	public String getNomeLivro() {
		return nomeLivro;
	}

	@Column(name="ano")
	public int getAno() {
		return ano;
	}

	@Column(name="versao")
	public int getVersao() {
		return versao;
	}

	@Column(name="idAutor")
	public int getIdAutor() {
		return idAutor;
	}

	@Column(name="descricao")
	public String getDescricao() {
		return descricao;
	}
            //setters... gerados pela IDE sem eu nem ter mechido
}

agora o erro que esta dando, vejam que estranho, eu até marquei aqui em vermelho…

11 Respostas

danielbussade

Olá, está faltando um Jar “slf4j-log4j12.jar”.

Tentá adicioná-lo no seu classpath, e testa!

maior_abandonado

não ta mostrando pq eu expendi o jar que vinha antes, pra mostra a classe que da dando NoClassDefFoundError

veja todos os jars adicionados:

danielbussade

Ah tá. Kra muito estranho esse erro seu.

Pode fazer o seguinte

Coloque o stack trace todo!

maior_abandonado

pois é…achei muito estranho também…

veja o que apareceu aqui na saida padrão no eclipse:

antes java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.hibernate.cfg.annotations.Version.<clinit>(Version.java:12) at org.hibernate.cfg.AnnotationConfiguration.<clinit>(AnnotationConfiguration.java:78) at br.com.iwts.estudos.dao.ConnectionFactory.<clinit>(ConnectionFactory.java:15) at br.com.iwts.estudos.dao.LivroDao.getTodos(LivroDao.java:61) at br.com.iwts.estudos.controller.LivroController.getTodos(LivroController.java:66) 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 javax.el.BeanELResolver.getValue(BeanELResolver.java:62) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64) at org.apache.el.parser.AstValue.getValue(AstValue.java:118) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101) at javax.faces.component.UIData.getValue(UIData.java:582) at javax.faces.component.UIData.getDataModel(UIData.java:1063) at javax.faces.component.UIData.setRowIndex(UIData.java:417) at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85) at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788) at javax.faces.component.UIData.encodeBegin(UIData.java:879) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884) at javax.faces.render.Renderer.encodeChildren(Renderer.java:137) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 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:128) 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:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 44 more depois 14/05/2009 10:09:13 com.sun.faces.lifecycle.LifecycleImpl phase WARNING: executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@7c3885) threw exception javax.faces.FacesException: org.apache.jasper.el.JspELException: /listaLivros.jsp(14,3) '#{livroController.todos}' Error reading 'todos' on type br.com.iwts.estudos.controller.LivroController at javax.faces.component.UIData.getValue(UIData.java:585) at javax.faces.component.UIData.getDataModel(UIData.java:1063) at javax.faces.component.UIData.setRowIndex(UIData.java:417) at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85) at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788) at javax.faces.component.UIData.encodeBegin(UIData.java:879) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884) at javax.faces.render.Renderer.encodeChildren(Renderer.java:137) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 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:128) 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:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source) Caused by: org.apache.jasper.el.JspELException: /listaLivros.jsp(14,3) '#{livroController.todos}' Error reading 'todos' on type br.com.iwts.estudos.controller.LivroController at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:107) at javax.faces.component.UIData.getValue(UIData.java:582) ... 28 more Caused by: java.lang.ExceptionInInitializerError at br.com.iwts.estudos.dao.ConnectionFactory.<clinit>(ConnectionFactory.java:20) at br.com.iwts.estudos.dao.LivroDao.getTodos(LivroDao.java:61) at br.com.iwts.estudos.controller.LivroController.getTodos(LivroController.java:66) 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 javax.el.BeanELResolver.getValue(BeanELResolver.java:62) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64) at org.apache.el.parser.AstValue.getValue(AstValue.java:118) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101) ... 29 more Caused by: java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.hibernate.cfg.annotations.Version.<clinit>(Version.java:12) at org.hibernate.cfg.AnnotationConfiguration.<clinit>(AnnotationConfiguration.java:78) at br.com.iwts.estudos.dao.ConnectionFactory.<clinit>(ConnectionFactory.java:15) ... 41 more Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) ... 44 more 14/05/2009 10:09:13 org.apache.catalina.core.StandardWrapperValve invoke SEVERE: Servlet.service() for servlet Faces Servlet threw exception java.lang.ClassNotFoundException: org.slf4j.LoggerFactory at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClassInternal(Unknown Source) at org.hibernate.cfg.annotations.Version.<clinit>(Version.java:12) at org.hibernate.cfg.AnnotationConfiguration.<clinit>(AnnotationConfiguration.java:78) at br.com.iwts.estudos.dao.ConnectionFactory.<clinit>(ConnectionFactory.java:15) at br.com.iwts.estudos.dao.LivroDao.getTodos(LivroDao.java:61) at br.com.iwts.estudos.controller.LivroController.getTodos(LivroController.java:66) 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 javax.el.BeanELResolver.getValue(BeanELResolver.java:62) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:64) at org.apache.el.parser.AstValue.getValue(AstValue.java:118) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186) at org.apache.jasper.el.JspValueExpression.getValue(JspValueExpression.java:101) at javax.faces.component.UIData.getValue(UIData.java:582) at javax.faces.component.UIData.getDataModel(UIData.java:1063) at javax.faces.component.UIData.setRowIndex(UIData.java:417) at com.sun.faces.renderkit.html_basic.TableRenderer.encodeBegin(TableRenderer.java:85) at javax.faces.component.UIComponentBase.encodeBegin(UIComponentBase.java:788) at javax.faces.component.UIData.encodeBegin(UIData.java:879) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:884) at javax.faces.render.Renderer.encodeChildren(Renderer.java:137) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:812) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:886) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:892) at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:245) at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:176) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106) at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 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:128) 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:286) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) at java.lang.Thread.run(Unknown Source)

o estranho… é que tenho um código no netbeans que tava igual e estava chegando na view sem exibir erro, o unico problema é que a h:dataTable do jsf estava vazia…

eu só tentei mudar algumas coisihas depois disso pra tenta resolver no netbeans mais ainda assim não consegui nada…

obrigado dezde ja pelo help… vlw mesmo =)

caso seja util, ta ai minha tabela:

mysql> describe livros

-> ;

±----------±-----------------+

| Field        | Type               |

±----------±-----------------+

| idLivro      | int(10) unsigned |

| isbn         | varchar(13)      |

| nomeLivro| varchar(55)      |

| ano          | int(4) unsigned  |

| versao     | int(3) unsigned  |

| idAutor     | int(10) unsigned |

| descricao | varchar(250)     |

±----------±-----------------+

7 rows in set (0.69 sec)
danielbussade

É realmente, não tenho idéia do que possa ser. Eu te aconselho a fazer o seguinte.

*Crie um projeto novo sem nenhum classe
*Crie uma classe main e coloque o codigo para obter a SessionFactory.

Caso lance o erro novamente, não sei mais como posso te ajudar;

maior_abandonado

blz…eu vo tenta isso então…obrigado de qualquer jeito…

volto aqui quando termina pra posta o resultado…

se mais alguém tiver alguma ajuda será muito bemvinda…

maior_abandonado

bom...criei um novo projeto e uma nova classe, vejam:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class teste {
	
	public teste() {
		// TODO Auto-generated constructor stub
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		SessionFactory sessionFactory = null;
		ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
		
		try{
			sessionFactory = new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();
		
			Session session = threadLocal.get();
			session = sessionFactory.openSession();			
			
			session.close();
		
		}catch(Throwable e){
			System.out.println("antes");
			e.printStackTrace(); 
			System.out.println("depois");
			throw new ExceptionInInitializerError(e);
		}
		
		
	}

}

veja o erro que deu ao tentar executa-la:

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
antes
org.hibernate.AnnotationException: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:374)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.com.iwts.estudos.testes.teste.main(teste.java:21)
Caused by: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.getDeclaredConstructor(Unknown Source)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:362)
	... 3 more
Exception in thread "main" java.lang.ExceptionInInitializerError
	at br.com.iwts.estudos.testes.teste.main(teste.java:32)
depois
Caused by: org.hibernate.AnnotationException: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:374)
	at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)
	at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:867)
	at br.com.iwts.estudos.testes.teste.main(teste.java:21)
Caused by: java.lang.NoSuchMethodException: org.hibernate.validator.ClassValidator.<init>(java.lang.Class, java.util.ResourceBundle, org.hibernate.validator.MessageInterpolator, java.util.Map, org.hibernate.annotations.common.reflection.ReflectionManager)
	at java.lang.Class.getConstructor0(Unknown Source)
	at java.lang.Class.getDeclaredConstructor(Unknown Source)
	at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:362)
	... 3 more
maior_abandonado

alguém?

Marky.Vasconcelos

Fora o jar do slf4j-log4j voce colocou o jar do log4j no class-path?

maior_abandonado

acredito que sim… entre os jars que eu coloquei, está o log4j-1.2.12.jar, seria esse??

edit. parece que sim, olhando a estrutura dele tem o pacote org.apache.log4j e varios subpacotes… me parece que é esse mesmo…

maior_abandonado

só pelo caso de alguém googlando chegar aqui no futuro…

ao adicionar o log4j.properties resolveu o problema ai em cima citado… ai estava dando um classNotFoundException no HibernateException.class… eu estranhei pq o jar estava adicionado no projeto no eclipse…

ai eu adicionei o jar que tinha essa classe no lib do tomcat, ai deu a mesma coisa com outra classe e ai eu adicionei todos os jars do hibernate no lib do tomcat…

ai tava reclamando de uma classe no commons.loggin, e dpeois no commons.collections…adicionei os 2 jars, paro de dar problema antes da view, só nessa camada q ainda tinha problema, corrigi masi um ou outro errinho besta que encontrei na minha dataTable e ai funciono…

bom, foi isso que fiz, agradeço ai pra todo mundo que procurou o erro junto comigo, se alguém precisa nofuturo a solução ta ai…

Criado 14 de maio de 2009
Ultima resposta 15 de mai. de 2009
Respostas 11
Participantes 3