Nao consigo persistir objeto no banco com hibernate

4 respostas
faeldix

log

0 [main] INFO org.hibernate.annotations.common.Version - HCANN000001: Hibernate Commons Annotations {4.0.1.Final} 15 [main] INFO org.hibernate.Version - HHH000412: Hibernate Core {4.0.0.Final} 15 [main] INFO org.hibernate.cfg.Environment - HHH000206: hibernate.properties not found 15 [main] INFO org.hibernate.cfg.Environment - HHH000021: Bytecode provider name : javassist 390 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000402: Using Hibernate built-in connection pool (not for production use!) 390 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000115: Hibernate connection pool size: 20 390 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000006: Autocommit mode: true 390 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000401: using driver [com.mysql.jdbc.Driver] at URL [jdbc:mysql://localhost:3306/livraria] 390 [main] INFO org.hibernate.service.jdbc.connections.internal.DriverManagerConnectionProviderImpl - HHH000046: Connection properties: {user=temp, password=****, autocommit=true, release_mode=auto} 733 [main] INFO org.hibernate.dialect.Dialect - HHH000400: Using dialect: org.hibernate.dialect.MySQL5InnoDBDialect 748 [main] INFO org.hibernate.engine.transaction.internal.TransactionFactoryInitiator - HHH000268: Transaction strategy: org.hibernate.engine.transaction.internal.jdbc.JdbcTransactionFactory 748 [main] INFO org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory - HHH000397: Using ASTQueryTranslatorFactory 1015 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - HHH000227: Running hbm2ddl schema export 1295 [main] INFO org.hibernate.tool.hbm2ddl.SchemaExport - HHH000230: Schema export complete

classe Main()

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.rafael.beans.Livro;


public class Admin {

	/*
	 * @param args
	 */
	public static void main(String[] args) {
		
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("livraria");
		EntityManager manager = factory.createEntityManager();
		
		Livro livro = new Livro();
		livro.setAno("1990");
		livro.setNome("Desing Patternrs");
		
		manager.persist(livro);

	}

}

bean

package br.com.rafael.beans;
import javax.persistence.*;

@Entity
public class Livro {
	
	@Id @GeneratedValue
	private Long id;
	
	@Column(nullable=false)
	private String Nome;
	@Column(nullable=false)
	private String ano;
	
	public Long getId() {
		return id;
	}
	
	@SuppressWarnings("unused")
	private void setId(Long id) {
		this.id = id;
	}
	
	public String getNome() {
		return Nome;
	}
	
	public void setNome(String nome) {
		Nome = nome;
	}
	
	public String getAno() {
		return ano;
	}
	
	public void setAno(String ano) {
		this.ano = ano;
	}
	
}

xml

<persistence 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_2_0.xsd"
             version="2.0">
   <persistence-unit name="livraria" transaction-type="RESOURCE_LOCAL">
      <provider>org.hibernate.ejb.HibernatePersistence</provider>
      <properties>
         <property name="hibernate.hbm2ddl.auto" value="create"/>
         <property name="javax.persistence.jdbc.user" value="temp"/>
         <property name="javax.persistence.jdbc.password" value="temp123"/>
         <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/livraria"/>
         <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver"/>
         <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/>
      </properties>
   </persistence-unit>
</persistence>

Alguem sabe pq nao persistiu?
grato

4 Respostas

Hebert_Coelho

Chama o commit e depois fecha a conexão.

Nesse post aqui tem um exemplo: Hibernate 3 com JPA 2

magnocosta

Grandee jakefrog,

Sempre contribuindo com os posts sobre JPA !

ABraçoos !

Hebert_Coelho

magnocosta:
Grandee jakefrog,

Sempre contribuindo com os posts sobre JPA !

ABraçoos !


Aoopa. Valeu! =D

faeldix
jakefrog:
Chama o commit e depois fecha a conexão.

Nesse post aqui tem um exemplo: Hibernate 3 com JPA 2

vc fez a configuracao do hibernate parecer besteira com essa postagem.. obrigado..
agora ja posso inclusive criar meus metodos :D

so nao sei como vou fabricar as conexoes.. ja percebi que e um pouco lento..
mas td bem..

abs []'s

___________________________

edit: [color=red]EntityManager is closed[/color]

package br.com.testes;

import java.text.ParseException;
import java.text.SimpleDateFormat;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

import br.com.bean.Livro;
import br.com.hibernate.ManagerHibernate;

public class Testes {

	/**
	 * @param args
	 * @throws ParseException 
	 */
	public static void main(String[] args) throws ParseException {
		
		EntityManager manager = new ManagerHibernate().getManager();
		manager.getTransaction().begin();
		Livro ct = new Livro();
		
		ct.setNome("rafael");
		ct.setAutor("irmaos deitel");
		ct.setData(new SimpleDateFormat("dd/MM/yyyy").parse("12/09/1969"));
		
		try {
			manager.persist(ct);
			manager.getTransaction().commit();
		} catch(Exception e){
			manager.close();
			manager.getTransaction().rollback();
		} finally {
			manager.close();
		}
		
		manager = new ManagerHibernate().getManager();
		manager.getTransaction().begin();
		
		ct.setNome("daniel");
		ct.setAutor("irmaos deitel");
		ct.setData(new SimpleDateFormat("dd/MM/yyyy").parse("12/09/1969"));
		
		try {
			manager.persist(ct);
			manager.getTransaction().commit();
		} catch(Exception e){
			manager.close();
			manager.getTransaction().rollback();
		} finally {
			manager.close();
		}
		
	}

}

nao deveria funcionar? pois EU ACHO (NÉ) que eu criei outra conexao.. segue a classe que cria novas conexao:

package br.com.hibernate;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class ManagerHibernate implements Controller {
	
	private EntityManager manager;
	
	public ManagerHibernate() {
		EntityManagerFactory fac = Persistence.createEntityManagerFactory("livraria");
		this.manager = fac.createEntityManager();
	}
	
	public EntityManager getManager(){
		return this.manager;
	}

	@Override
	public void insert(Controller ct) {
			
			EntityManager manager = new ManagerHibernate().getManager();
			manager.getTransaction().begin();
			
			try {
				manager.persist(ct);
				manager.getTransaction().commit();
			} catch(Exception e){
				e.printStackTrace();
				manager.getTransaction().rollback();
				System.out.println("ERRO: ".concat(e.getMessage()));
			} finally {
				manager.close();
			}
		}

	@Override
	public List<Controller> findAll() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Controller findEspecific(int id) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void remove(Controller ct) {
		// TODO Auto-generated method stub
		
	}
}
Criado 27 de janeiro de 2012
Ultima resposta 27 de jan. de 2012
Respostas 4
Participantes 3