Problemas com JPA+Hibernate

5 respostas
Bird89du

Boa tarde pessoal,

estou tentando fazer o "Hello Word" no JPA com Hibernate mas estou tendo problemas.

criei minha entity
@Entity
@Table(name = "contato")
public class Contato {

	@Id
	@Column(name = "id_contato")
	private int id;

	@Column(name = "nm_contato")
	private String nome;
	@Column(name = "email_contato")
	private String email;
...gets e sets
Criei também minha classe BussinesObject que vai ser minha entityManager
public class BussinesObject {

	public EntityManagerFactory entityManagerFactory = Persistence
			.createEntityManagerFactory("PU");

	public EntityManager entityManager = entityManagerFactory
			.createEntityManager();

	public void inserir(Contato contato) {
		entityManager.getTransaction().begin();
		entityManager.persist(contato);
		entityManager.getTransaction().commit();
		entityManager.close();

	}
}

Meu persistence.xml no diretório META-INF:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
	xmlns="http://java.sun.com/xml/ns/persistence" 
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
	  http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
	<persistence-unit name="PU" transaction-type="JTA">
		<provider>org.hibernate.ejb.HibernatePersistence</provider>
		<class>br.com.contato.domain.Contato</class>
		<properties>
			<property name="hibernate.connection.driver_class" value="oracle.jdbc.Driver.OracleDriver" />
			<property name="hibernate.connection.username" value="eduardomarquesm" />
			<property name="hibernate.connection.password" value="bird89du" />
			<property name="hibernate.connection.url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" />
			<property name="hibernate.show_sql" value="true" />
			<property name="hibernate.query.substitutions" value="true=S, false=N" />
		</properties>
	</persistence-unit>
</persistence>
Eu chamo minha classe main
public class Main {
	public static void main(String[] args) {
		Contato contato = new Contato();
		contato.setId(1);
		contato.setNome("Eduardo");
		contato.setEmail("eduaro@aoashdfçlas.com.br");
		BussinesObject bussinesObject = new BussinesObject();
		bussinesObject.inserir(contato);
		
	}

}

Rodando no servidor e não acontece nada, quando eu chamo rodando como aplicação dá o seguinte erro:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
	at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223)
	at org.slf4j.LoggerFactory.bind(LoggerFactory.java:120)
	at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111)
	at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:269)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:242)
	at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:255)
	at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:151)
	at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:107)
	at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:124)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:52)
	at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:34)
	at br.com.transitbrasil.contato.bo.BussinesObject.<init>(BussinesObject.java:12)
	at br.com.transitbrasil.contato.domain.Main.main(Main.java:11)

Por favor, estou procurando na Net e ainda não achei nenhum material passo a passo.

Obrigado
Eduardo Marques

5 Respostas

Bird89du

Alguém tem idéia de qual é o erro?
eu tenho que rodar no servidor ou como aplicação?

obrigado

Eduardo Marques

Foxlol

Pelo erro parece que tah faltando a biblioteca SLF4J no seu classpath:

http://www.slf4j.org/

Bird89du

Inseri o JAR mas continua com o mesmo erro,

tRuNkSnEt

Se me lembro bem acho que tem um engano nessas libs que são requeridas. Neste caso precisa baixar o slf4j diretamente do site (http://www.slf4j.org/) e adicionar no classpath as libs:
slf4j-api-*
slf4j-log4j12-*

Bird89du

Pessoal deu certo
Eu inseri os jars que ficam na pasta do HibernateAnnotation/lib/test,

Creio que os jars que estavam faltando são:

log4j e slf4j-log4j12

Muito obrigado pela ajuda,

Abraço

Criado 26 de outubro de 2009
Ultima resposta 27 de out. de 2009
Respostas 5
Participantes 3