Erro com Hibernate + PostGre + auto incremento [RESOLVIDO]

Olá amigo…fiz como vc falou e o erro persiste :frowning:

cara, tenta além disso mudar a tua chave primaria para integer, e na classe para int…

Amigão… vou tentar isso entao…
Mas teria que ser bigint ou int normal cara?
Vou ter que criar a sequence na mão lá depois também…
Agora estou indo pro horário de almoço cara… volto daqui a pouco e se der certo eu te falo aqui… se não te falo também …rsrsrs
Muito obrigado peloa força amigão!
Abraços

normal…
se não me engano um int vai até
2 147 483 647…

ou seja, é muito registro!!!

outra coisa, no seu DAO … inserir … pq esta testehibernate.Clientes c ??

tenta deixar só Clientes c

Olá amigo!
Cara, ainda não consegui…já tentei criar a tabela a partir do hibernate e nada…
Eu tento mudar no BD a variável ID para int mas sempre que coloco integer na variável e seto ela como PK ela vai para serial…
Ae na hora de executar ele dá erro de cast e diz que não consegue converter esse tipo long para integer.
Caramba… não sei mais o que pode ser isso galera… por favor… me ajuuuudem!!!

Pessoal…
Alguém poderia me passar um code de uma classe completa aqui e também o BD para que eu faça um teste pra ver se funfa?
A classe… e o BD…
Não consigo resolver esse problema de jeito nenhum aqui!

Pessoal, é o seguinte…
PArece mesmo que o hibernate não consegue “chamar” a sequence…Porque testei a sequence direto no banco e ela tá funcionando legal… inseri alguns records direto no banco e ele gerou direitim os ids do pessoal…
O problema são com os annotatios do hibernate, não sei se estão todos certos mas parece que eles não conseguem se comunicar com a sequence no BD!!
Por favor, me ajudem, pois não to conseguindo resolver isso de jeito nenhum pessoal!!!
HEEEEEEEEEEEEEELPPPPPPPPPPPPP

Amigo, ai vai uma classe completa… é de Administrador…

DAO


package DAO;

import java.util.List;

import org.hibernate.Session;
import model.Administrador;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Transaction;
import util.HibernateUtil;

public class AdministradorDAO {
 
    private Session session;

    public AdministradorDAO()
    {
        session = HibernateUtil.getSession();
    }

    public void inserir(Administrador X)
    {
        Transaction t = session.beginTransaction();
        session.save(X);
        t.commit();
    }

    public void alterar(Administrador X)
    {
        Transaction t = session.beginTransaction();
        session.update(X);
        t.commit();
    }

    public void excluir(Administrador X)
    {
        Transaction t = session.beginTransaction();
        session.delete(X);
        t.commit();
    }

    public List<Administrador> listar()
    {
        Criteria select = session.createCriteria(Administrador.class);
        return select.list();
    }

    public Administrador buscar(Administrador X)
    {
        return (Administrador)session.load(Administrador.class, X.getAdm_cod());
    }
    
    public boolean login(Administrador a) {
        Query q = session.createQuery("from Administrador where adm_cpf = :cpf and adm_senha = :senha");
        q.setParameter("cpf", a.getAdm_cpf());
        q.setParameter("senha", a.getAdm_senha());
        
        List<Administrador> lista = q.list();
        if(lista.size() > 0){
            //System.out.print("verdadeiro");
            return true;
        }
        //System.out.print("falso");
        return false;
        
    }
}

CLASSE

package model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;

@Entity
@SequenceGenerator(name = "seq_Adm",
sequenceName = "seq_Adm",
allocationSize = 1)

public class Administrador {
        
        @Id
        @GeneratedValue(strategy = GenerationType.SEQUENCE,
        generator = "seq_Adm")
	private int adm_cod;
	 
	private String adm_nome;
	 
	private String adm_senha;
	 
	private Long adm_cpf;
	 
	private String adm_mail;
	 
	private int adm_fone;

    public void setAdm_cod(int adm_cod) {
        this.adm_cod = adm_cod;
    }

    public int getAdm_cod() {
        return adm_cod;
    }

    public void setAdm_nome(String adm_nome) {
        this.adm_nome = adm_nome;
    }

    public String getAdm_nome() {
        return adm_nome;
    }

    public void setAdm_senha(String adm_senha) {
        this.adm_senha = adm_senha;
    }

    public String getAdm_senha() {
        return adm_senha;
    }

    public void setAdm_mail(String adm_mail) {
        this.adm_mail = adm_mail;
    }

    public String getAdm_mail() {
        return adm_mail;
    }

    public void setAdm_cpf(Long adm_cpf) {
        this.adm_cpf = adm_cpf;
    }

    public long getAdm_cpf() {
        return adm_cpf;
    }

    public void setAdm_fone(int adm_fone) {
        this.adm_fone = adm_fone;
    }

    public int getAdm_fone() {
        return adm_fone;
    }
}

BOTÃO QUE GRAVA!!!

    private void jButton1_actionPerformed(ActionEvent e) {
    //Objetos
        AdministradorDAO dao = new AdministradorDAO();
        Administrador administrador = new Administrador();
        
    //Atribuição
        //administrador.setAdm_cod(Integer.parseInt(jTextField1.getText()));
        administrador.setAdm_nome(JTF_nome.getText());
        administrador.setAdm_cpf(Long.parseLong(JTF_cpf.getText()));
        administrador.setAdm_fone(Integer.parseInt(JTF_fone.getText()));
        administrador.setAdm_mail(JTF_mail.getText());
        administrador.setAdm_senha(JTF_Senha.getText());
        
    //Gravação
        if(new Administrador().validaCpf(JTF_cpf.getText()) == true){
        
        dao.inserir(administrador);
        Listar();}
        else{
            JOptionPane.showMessageDialog(null,"CPF incorreto, verifique e tente novamente!!!");
        }
        
    }

SQL PRA TABLE ADMIN

CREATE TABLE administrador
(
  adm_cod integer NOT NULL,
  adm_nome character(60),
  adm_senha character(10),
  adm_mail character(10),
  adm_cpf bigint,
  adm_fone integer,
  CONSTRAINT pk_administrador PRIMARY KEY (adm_cod)
)
WITH (
  OIDS=FALSE
);
ALTER TABLE administrador OWNER TO postgres;

SQL SEQUENCIA

CREATE SEQUENCE seq_adm
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 7
  CACHE 1;
ALTER TABLE seq_adm OWNER TO postgres;

tomara que funcione!

Olá amigo!
Cara, desta vez parece que vai funfar, ele gerou a sequence certim lá no banco e tudo mais… só que agora ele tá me dando outro erro:
Essa é a parte final do erro:

INFO: Not binding factory to JNDI, no JNDI name configured
20/10/2011 09:30:39 org.hibernate.util.JDBCExceptionReporter logExceptions
AVISO: SQL Error: 0, SQLState: 42P01
20/10/2011 09:30:39 org.hibernate.util.JDBCExceptionReporter logExceptions
GRAVE: ERRO: relação "hibernate_sequence" não existe

E ele dá essa mensagem: Could not get the next sequence value!
Por favor, me ajuuuuudem… parece que agora vai!!!

Cara, vc mudou o nome da seq em algum lugar?
parece q ele ta procurando por esse hibernate_sequence…

se mudou verifique se esta exatamente igual!

CONSEGUUUUUUUUUUUUUIIIIIIIIIIIIIIIIIIIIII!!!
Amigo, consegui finalmente resolver o erro!!!
Esse último é porque descobri que isso acontece quando o hibernate não consegue achar uma sequence e exibe o nome default hibernate_sequence…
Ae tem que mapear ela no arquivo hbm…

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="modelo.Clientes" table="clientes" schema="public">
    <id name="id" type="integer">
            <column name="id" />
            <generator class="sequence">
                <param name="sequence">clientes_id_seq</param>
            </generator>
        </id>
        <property name="nome" type="string">
            <column name="nome" />
        </property>
        
        <property name="cpf" type="string">
            <column name="cpf" />
        </property>
        </class>
</hibernate-mapping>

Feito isso, usei o código que vc me passou e funcionou legal cara!
Fiz um teste criando outro bd e tudo mais em outra classe e funfou legal agora!!
Como pode ser que apareçam pessou com o mesmo erro… lá vai o code!!!

DAO:

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

package DAO;

import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.Criteria;
import org.hibernate.Query;

import modelo.Clientes;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import org.hibernate.cfg.Configuration;
import org.hibernate.criterion.Restrictions;


/**
 *
 * @author Andre
 */
public class DAOClientes {

   private static SessionFactory factory;
     static{
       try{
        factory = new Configuration().configure().buildSessionFactory();
       }
       catch (Exception e ){
        JOptionPane.showMessageDialog(null,"ERRO AO CONECTAR:"+e);
       }

    }

    public static Session getSession (){
        return factory.openSession();
    }


    public void inserir (Clientes c) {
        Session session = getSession();
        Transaction t = session.beginTransaction();
        session.save(c);
        JOptionPane.showMessageDialog(null,c.getId());
        t.commit();
        session.close();
    }

    public void delete (Clientes c){
        Session session = factory.openSession();
        session.delete(c);
        session.flush();
        session.close();
    }



    public Clientes getOne(String pk) throws Exception{
        Session session = getSession();
        Clientes c = new Clientes();
        JOptionPane.showMessageDialog(null,pk);
        Transaction t = session.beginTransaction();
        Criteria select = session.createCriteria(Clientes.class);
        select.add(
               Restrictions.like("id",pk)

                );
       List<Clientes> l = select.list();
       c.setNome(l.get(0).getNome());
       c.setCpf(l.get(0).getCpf());
       //c.setId(Integer.parseInt(l.get(0).getId()));



        return c;
    }
  


}

Classe:

package modelo;
// Generated 14/10/2011 16:54:34 by Hibernate Tools 3.2.1.GA


import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import org.hibernate.annotations.Entity;





/**
 * Clientes generated by hbm2java
 */
//na compo name vc colocar o nome da sequencia que vc for usar dentro da classe... no nome sequenceName é o nome da sequencia no BANCO
@Entity
@SequenceGenerator(name = "clientes_id_seq", sequenceName = "clientes_id_seq")
public class Clientes  implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "clientes_id_seq")
    private Integer id;
    private String nome;
    private String cpf;




    public Integer getId() {
        return this.id;
    }

    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getCpf() {
        return this.cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }




}

Cara, muuuuuuuuuuuuuito obrigado a vc amigo fejohann e a todos os amigos do fórum!!!
Valeu pessoal…
Um forte abraço!!

Aeeee…

Nada não cara… o bom daqui (GUJ) é que você “ensina e aprende” o tempo todo…

Flw

precisando… Todo mundo ta ai pra ajuda!!!