Olá pessoal!!
Estou fazendo meu sistema utilizando JPA e postgres.
O problema que está ocorredo é que o meu ID está sendo único no meu BD inteiro e não somente nas tabelas, o que tá deixando um intervalo de números entre um código e outro dentro de uma mesma tabela, ou seja, na hora de cadastrar algo, verifica-se o último ID cadastrado no BD, e é somado +1 ao número.
Ou seja:
Eu tenho a classe Pessoa e a classe Usuario
Onde na classe Pessoa tem:
@Entity
@Inheritance(strategy=InheritanceType.JOINED)
public class Pessoa implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long codigoPessoa;
E na classe Usuario tem:
@Entity
public class Usuario implements Serializable{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long codigoUsuario;
Por exemplo ao cadastrar uma Pessoa, é feito primeiro o persist de Usuario e depois persist Pessoa no BD.
Mostro a seguir o que ocorre no BD:
Na tabela usuario é feito insert com o codigoUsuario 1.
Na tabela pessoa é feito insert com o codigoPessoa 2.
Se eu inserir mais uma pessoa, na tabela Usuario vai o códigoUsuario 3 e na Pessoa vai o codigoPessoa 4.
Ou seja, fica sempre com buracos os números na minha tabela.
O que eu quero fazer é que o ID seja único na tabela e não no BD inteiro…
No Postgres a tabela Pessoa é:
-- Table: pessoa
-- DROP TABLE pessoa;
CREATE TABLE pessoa
(
codigopessoa int8 NOT NULL,
ativo bool NOT NULL,
CONSTRAINT pessoa_pkey PRIMARY KEY (codigopessoa)
)
WITH OIDS;
ALTER TABLE pessoa OWNER TO postgres;
E a tabela Usuario:
-- Table: usuario
-- DROP TABLE usuario;
CREATE TABLE usuario
(
codigousuario int8 NOT NULL,
senha varchar(10) NOT NULL,
codigotipousuario int8 NOT NULL,
CONSTRAINT usuario_pkey PRIMARY KEY (codigousuario),
CONSTRAINT fk5b4d8b0e43c9cb36 FOREIGN KEY (codigotipousuario) REFERENCES tipousuario (codigotipousuario) ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT usuario_loginusuario_key UNIQUE (loginusuario)
)
WITH OIDS;
ALTER TABLE usuario OWNER TO postgres;
Alguém sabe como resolver isso??
Agradeço desde já…