dúvida autoincrement [RESOLVIDO]

6 respostas
R

Caros Bom dia.
Criei uma aplicação e estou tentando usar a sequencia do Postgree.
Estou usando Eclipse, Hibernate, VRaptor.
O problema é que a sequencia já começa em 50, e salta de 50 em 50 números, as vezes obedece a sequencia vai de um em um. Fica mais ou menos assim:
50
100
101
102
150
200
201
Declarei a classe assim.

@Entity   
@SequenceGenerator(name="seq_cantina",sequenceName="seq_cantina")
public class Cantina_sm {
	
	@Id
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seq_cantina")   
	@Column(unique=true)
	private Long id_cantina;


 public Long getId_cantina() {
   return id_cantina;
  }
public void setId_cantina(Long id_cantina) {
   this.id_cantina = id_cantina;
  }

Sei que transações abortadas causam saltos de 2 em 2, mas 50 em 50 é muita coisa.
Isso é normal ? Estou declarando errado?
Muito obrigado :slight_smile:

6 Respostas

albama

Verifique na propria seguencia com está configurado para incrementar.

Pelo PgAdmin, localize sequencia , lá tem a quantidade que é para ser incrementada.

muldon

exatamente, o que o albama falou é verdade. Essa configuracao nao tem nada a ver com seu código. Está na sequence.

A

Para postgreSql eu utilizo GenerationType.IDENTITY e não especifico como será utilizado pelo banco.
Não precisa especificar unique porque id_cantina será primary key.

testa isto aqui:

@Entity     
public class Cantina_sm {   
       
    @Id   
    @GeneratedValue(strategy=GenerationType.IDENTITY)     
    private Long id_cantina;   
  
  
public Long getId_cantina() {   
   return id_cantina;   
  }   
public void setId_cantina(Long id_cantina) {   
   this.id_cantina = id_cantina;   
  }

Outra sugestão é dar um nome mais legível para a classe Cantina_sm ... e utilizar @Table para definir o nome da tabela.

R

[email removido:
]Verifique na propria seguencia com está configurado para incrementar.

Pelo PgAdmin, localize sequencia , lá tem a quantidade que é para ser incrementada.

Segue o esquema da sequencia no postgree

Incrementar por        1
Valor mínimo             1
Valor máximo           9223372036854775807
Valor inicial               1
Valor de cache          1
Foi dado um ciclo ?
R

Caros [email removido] ,muldon e Arnaldo Caetano, agradeço a todos,
Concordo com voces que o problema deveria estar na sequencia do Postgree, mas
não estava, fiz a configuração sugerida pelo Arnaldo Caetano e funcionou sem problemas.
muito obrigado a todos, um forte abraço a todos Roger :smiley:

denissys

O problema está no valor default do allocationSize da anotação @SequenceGenerator, você deve configura-lo para valor 1, o default é 50, veja

http://www.j2ee.me/javaee/5/docs/api/javax/persistence/SequenceGenerator.html#allocationSize()^

[]'s

Denis Santos
[email removido]

Criado 26 de janeiro de 2009
Ultima resposta 28 de ago. de 2009
Respostas 6
Participantes 5