Olá amigo…fiz como vc falou e o erro persiste
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!!!