Oláo pessoal,
Primeiramente, para que não pareça repetitivo o post porque tem varios aqui no GUJ tratando deste mesmo problema, mas ja tentei todas a dicas citadas neles e não tem jeito de fazer o auto-incremento através da sequence do PostgreSQL funcionar no hibernate.
Já verifiquei as configurações do Bean, inclusive seguindo as dicas mencionadas no forum e também a documentação oficial do Hibernate.
também verifiquei as permissões de acesso da sequence dentro do postgreSQL para garintir que o usuario que a aplicação usa possa fazer
operaçoes de acesso a ela.
Crieu a tabela:
CREATE TABLE "TBSETOR"
(
"IDSETOR" bigserial NOT NULL,
"SETOR" character varying(50),
"DESCRICAO" character varying(100),
CONSTRAINT "TBSETOR_pkey" PRIMARY KEY ("IDSETOR")
)
WITH (
OIDS=FALSE
);
ALTER TABLE "TBSETOR" OWNER TO postgres;
O PostgreSQL criou a sequencia automaticamente:
CREATE SEQUENCE "TBSETOR_IDSETOR_seq"
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START 1
CACHE 1;
ALTER TABLE "TBSETOR_IDSETOR_seq" OWNER TO postgres;
GRANT ALL ON TABLE "TBSETOR_IDSETOR_seq" TO postgres;
Quando tento inserir algo no banco o debug acusa este trecho de erro:
... Hibernate: select nextval ('TBSETOR_IDSETOR_seq')
24/03/2011 00:22:08 org.hibernate.util.JDBCExceptionReporter logExceptions
AVISO: SQL Error: 0, SQLState: 42P01
24/03/2011 00:22:08 org.hibernate.util.JDBCExceptionReporter logExceptions
GRAVE: ERRO: relação "tbsetor_idsetor_seq" não existe
Posição: 17
org.hibernate.exception.SQLGrammarException: could not get next sequence value
...
Meu Bean:
@Entity
@Table(name = "TBSETOR")
@SequenceGenerator(name = "TBSETOR_IDSETOR_seq", sequenceName = "TBSETOR_IDSETOR_seq")
public class Setor implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "IDSETOR")
@GeneratedValue(generator = "TBSETOR_IDSETOR_seq", strategy = GenerationType.AUTO)
private long idSetor;
@Column(name = "SETOR")
private String setor;
@Column(name = "DESCRICAO")
private String descricao;
/**
* @return the _idSetor
*/
public long getIdSetor() {
return idSetor;
}
/**
* @param idSetor the _idSetor to set
*/
public void setIdSetor(long idSetor) {
this.idSetor = idSetor;
}
/**
* @return the _setor
*/
public String getSetor() {
return setor;
}
/**
* @param setor the _setor to set
*/
public void setSetor(String setor) {
this.setor = setor;
}
/**
* @return the _descricao
*/
public String getDescricao() {
return descricao;
}
/**
* @param descricao the _descricao to set
*/
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
Alguém sabe o que está errado?
obrigado.