Erro na JPA

1 resposta
U
Tenho a seguinte classe:
package autoescola.model;

import java.net.Proxy.Type;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
public class Conta 
{
   @Id
   @Column (insertable = false)
   @GeneratedValue(strategy=GenerationType.IDENTITY)
   private int id;
   private String descricao;
   @Temporal(TemporalType.DATE)
   private Date data;
   private String valor;
   private boolean tipo;  
    .  
    .
    .
}
utilizo o postgresql como bd e o script de criação esta aqui:
CREATE TABLE conta
(
  id bigint NOT NULL,
  data date,
  descricao character varying(255) NOT NULL,
  valor character varying(255) NOT NULL,
  tipo boolean NOT NULL,
  CONSTRAINT pkid PRIMARY KEY (id)
)
O problema é que dá erro ao tentar cadastrar objetos no banco:
BaseDAO<Conta> dao = new BaseDAO<Conta>();
Calendar calendario = Calendar.getInstance();
Conta conta1 = new Conta();
conta1.setDescricao("Conta 1");
conta1.setData(calendario.getTime());
conta1.setValor("R$ 500,00");
dao.create(conta1);

O erro diz que é por causa da chave primária. Vide:

Internal Exception: org.postgresql.util.PSQLException: ERROR: null value in column "id" violates not-null constraint
Error Code: 0
Call: INSERT INTO CONTA (DATA, VALOR, DESCRICAO, TIPO) VALUES (?, ?, ?, ?)
bind => [2008-12-05, R$ 500,00, Conta 1, false]

Já tentei usar GenerationType.AUTO e GenerationType.SEQUENCE mas também não funcionou. Alguém pode ajudar?

1 Resposta

ajfilho

Acredito que no PostGree, assim como no oracle, não possui auto-incremento, tem q trabalhar com sequence;

Cria um sequence no seu banco e configura no Bean…

Depois tens que fazer um select para pegar o ultimo numero sequencial e em seguida você incrementa em um e passa para o objeto Conta.

Abraços!

Criado 5 de dezembro de 2008
Ultima resposta 5 de dez. de 2008
Respostas 1
Participantes 2