ERRO - Persistindo dados com JPA+HIBERNATE

14 respostas
B

boa tarde Pessoal,

sou estudante sozinho rsrsrsr

por favor me ajudem

não estou conseguindo persistir os dados no banco, tá dando um erro não sei, já verifiquei o persistence.xml e não acho o erro

e mesmo quando mudo o persistence.xml, o erro não muda, e mudando no postgre, o erro ainda não muda

me ajudem, por favor

14 Respostas

B
run:

09/02/2011 14:04:22 org.hibernate.cfg.annotations.Version 

INFO: Hibernate Annotations <a href="http://3.3.1.GA">3.3.1.GA</a>

09/02/2011 14:04:23 org.hibernate.cfg.Environment 

INFO: Hibernate 3.2.5

09/02/2011 14:04:23 org.hibernate.cfg.Environment 

INFO: hibernate.properties not found

09/02/2011 14:04:23 org.hibernate.cfg.Environment buildBytecodeProvider

INFO: Bytecode provider name : cglib

09/02/2011 14:04:23 org.hibernate.cfg.Environment 

INFO: using JDK 1.4 java.sql.Timestamp handling

09/02/2011 14:04:23 org.hibernate.ejb.Version 

INFO: Hibernate EntityManager <a href="http://3.3.2.GA">3.3.2.GA</a>

09/02/2011 14:04:24 org.hibernate.cfg.AnnotationBinder bindClass

INFO: Binding entity from annotated class: Cliente

09/02/2011 14:04:24 org.hibernate.cfg.annotations.EntityBinder bindTable

INFO: Bind entity Cliente on table Cliente

09/02/2011 14:04:24 org.hibernate.cfg.AnnotationConfiguration secondPassCompile

INFO: Hibernate Validator not found: ignoring

09/02/2011 14:04:25 org.hibernate.connection.DriverManagerConnectionProvider configure

INFO: Using Hibernate built-in connection pool (not for production use!)

09/02/2011 14:04:25 org.hibernate.connection.DriverManagerConnectionProvider configure

INFO: Hibernate connection pool size: 20

09/02/2011 14:04:25 org.hibernate.connection.DriverManagerConnectionProvider configure

INFO: autocommit mode: true

09/02/2011 14:04:25 org.hibernate.connection.DriverManagerConnectionProvider configure

INFO: using driver: org.postgresql.Driver at URL: jdbc:postgresql://localhost:5432/javaHibernate

09/02/2011 14:04:25 org.hibernate.connection.DriverManagerConnectionProvider configure

INFO: connection properties: {user=postgres, password=****, autocommit=true, release_mode=auto}

09/02/2011 14:04:25 org.hibernate.cfg.SettingsFactory buildSettings

AVISO: Could not obtain connection metadata

org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"

at org.postgresql.core.v3.ConnectionFactoryImpl.doAuthentication(ConnectionFactoryImpl.java:291)

at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:108)

at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)

at org.postgresql.jdbc2.AbstractJdbc2Connection.(AbstractJdbc2Connection.java:125)

at org.postgresql.jdbc3.AbstractJdbc3Connection.(AbstractJdbc3Connection.java:30)

at org.postgresql.jdbc3g.AbstractJdbc3gConnection.(AbstractJdbc3gConnection.java:22)

at org.postgresql.jdbc4.AbstractJdbc4Connection.(AbstractJdbc4Connection.java:30)

at org.postgresql.jdbc4.Jdbc4Connection.(Jdbc4Connection.java:24)

at org.postgresql.Driver.makeConnection(Driver.java:393)

at org.postgresql.Driver.connect(Driver.java:267)

at java.sql.DriverManager.getConnection(DriverManager.java:582)

at java.sql.DriverManager.getConnection(DriverManager.java:154)

at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)

at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:84)

at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)

at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)

at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)

at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)

at Main.main(Main.java:16)

Exception in thread “main” javax.persistence.PersistenceException: [PersistenceUnit: ClienteJPA] Unable to build EntityManagerFactory

at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:677)

at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:126)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:51)

at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:33)

at Main.main(Main.java:16)

Caused by: org.hibernate.HibernateException: Hibernate Dialect must be explicitly set

at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:57)

at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39)

at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426)

at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128)

at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2009)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1292)

at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)

at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:669)

… 4 more

Java Result: 1

CONSTRUÍDO COM SUCESSO (tempo total: 4 segundos)
B
<?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="ClienteJPA" transaction-type="RESOURCE_LOCAL">
    <!--  <provider>org.hibernate.ejb.HibernatePersistence</provider> -->
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <class>Cliente</class>
    <properties>
      <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
      <property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
      <property name="hibernate.connection.url" value="jdbc:postgresql://localhost/javaHibernate"/>
      <property name="hibernate.connection.username" value="postgres"/>
      <property name="hibernate.connection.password" value="postgres"/>
      <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
      <!-- <property name="hibernate.hbm2ddl.auto" value="create-drop"/> -->
      </properties>
  </persistence-unit>
</persistence>
B
import java.io.Serializable;
import javax.persistence.*;
import java.util.*;



/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author bruno
 */
@Entity
@Table(name = "Cliente")
public class Cliente implements Serializable {

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(unique=true, nullable=false)
private int codigo;

@Column(length=45)
private String cpf;

@Column(length=45)
private String rg;

@Column(length=45)
private String nome;

@Column(length=45)
private String telefone;

@Column(name = "data_nasc")
@Temporal(TemporalType.DATE)
private Date dataNascimento;

    /**
     * @return the codigo
     */
    public int getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    /**
     * @return the cpf
     */
    public String getCpf() {
        return cpf;
    }

    /**
     * @param cpf the cpf to set
     */
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    /**
     * @return the rg
     */
    public String getRg() {
        return rg;
    }

    /**
     * @param rg the rg to set
     */
    public void setRg(String rg) {
        this.rg = rg;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) {
        this.nome = nome;
    }

    /**
     * @return the telefone
     */
    public String getTelefone() {
        return telefone;
    }

    /**
     * @param telefone the telefone to set
     */
    public void setTelefone(String telefone) {
        this.telefone = telefone;
    }

    /**
     * @return the dataNascimento
     */
    public Date getDataNascimento() {
        return dataNascimento;
    }

    /**
     * @param dataNascimento the dataNascimento to set
     */
    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

}
B
import javax.persistence.*;

public class Main {

    public static void main(String [] args){
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("ClienteJPA");
        EntityManager em = emf.createEntityManager();

        Cliente cliente = new Cliente();
        cliente.setCodigo(1);
        cliente.setNome("Bruno");
        cliente.setRg("371819");
        cliente.setTelefone("9711 6103");

        em.getTransaction().begin();
        em.persist(cliente);
        em.getTransaction().commit();
        em.close();
        emf.close();
    }

}
xandevieira

AVISO: Could not obtain connection metadata
org.postgresql.util.PSQLException: FATAL: password authentication failed for user “postgres”

lazaropj

Cara… me parece a senha para acessar o banco…

olha seu erro:

org.postgresql.util.PSQLException: FATAL: password authentication failed for user "postgres"
B

Então Lazaro

quando eu aponto para outra base de dados por ex.

a saída do console não muda, fica como se não tivesse alterado o xml

eu mudei apontando para outra base que não seja o localhost/javaHibernate

mudei para localhost/postgres

na saída do console não muda, continua dizendo que está apontando para localhost/javaHibernate

é como se eu não tivesse alterado o xml

estranho, existe algum bug no netbeans que não altera ou captura as alteraçãoes do persistence.xml?

lazaropj

Se existe bug no NetBeans, eu não conheço.
Mas tenta alterar o xml, salvar e dar um refresh no projeto para ser de muda no console…

Outra coisa… esses bancos já estão criados no postgres né?
Pq o hibernate cria as tabelas… mas o banco tem q estar criado… mesmo q esse banco esteja sem tabela alguma…

lazaropj

e oq vc comentou essa linha:

<!-- <property name="hibernate.hbm2ddl.auto" value="create-drop"/> -->

?

B

amigo Lazaro

agora mudou , acho que progrediu

só que ainda está dando esse erro

INFO: schema export complete
Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: Cliente
        at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637)
        at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
        at Main.main(Main.java:27)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: Cliente
        at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:79)
        at org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:38)
        at org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:618)
        at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)        at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:592)

        at org.hibernate.impl.SessionImpl.persist(SessionImpl.java:596)
        at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
        ... 1 more
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 14 segundos)
B

nessa linha

<!-- <property name="hibernate.hbm2ddl.auto" value="create-drop"/> -->

eu achei num tutorial de apostila, nem sei para que serve

é importante?

lazaropj

Então… nessa linha vc configura como o hibernate vai tratar as entidades… desse jeito q está… ele vai apagar as tabelas existentes e criar novas…
então é bom vc trocar para update
coloca assim:

<property name="hibernate.hbm2ddl.auto" value="update"/>
lazaropj

e outra coisa…
vc não dividiu por pacotes as classes?
Se vc colocar… vc tem q colocar o fullpath da classe.

bobboyms

Acho que pode te ajudar http://code.google.com/p/jpa-component/wiki/Doc_PT_Br

Criado 9 de fevereiro de 2011
Ultima resposta 8 de out. de 2011
Respostas 14
Participantes 4