IDs gerados automaticamente (Hibernate)

Boa tarde pessoal,

Voltei a utilizar este framework (Hibernate), pois tinha deixado um pouco de lado algum tempo atrás… (que falta me fez :slight_smile: )
Voltei a utilizá-lo, tentando persistir em um base de dados Derby.
Juro que procurei informações sobre isso que vou comentar…

Os IDs gerados para o campo ID do meu banco (field anotado na classe, com GeneratedValue do pacote javax.persistence.GeneratedValue), são números “estrombólicos”.
Nas primeiras inserções (persistindo) na base, foi gerado ID=1,ID=2
Mas depois ao tentar inserir uma "porrada de itens, foram gerados IDs do tipo:
32768
32769
32770

Alguém saberia dizer, o que poderia estar causando isto?
Vlw!

posta o codigo da classe para poder dar uma olhada…

Logo abaixo, está o código da classe que me retorna as sessões:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibFact {
	private static SessionFactory factory;
	private static Session session;
	private static AnnotationConfiguration cfg;
	
	private HibFact(){}
	
	public static Session getSession()
	{
		if(factory!=null){
			return factory.openSession();
		}
		else{
			cfg=new AnnotationConfiguration();
			cfg.addAnnotatedClass(Produto.class);
			factory=cfg.buildSessionFactory();
			session=factory.openSession();
			return session;			
		}
	}
}

E na minha classe DAO, utilizo Singleton:

[code]import org.hibernate.Session;
import org.hibernate.Transaction;
import br.com.caelum.hibernate.HibernateFactory;
import br.com.caelum.hibernate.Produto;

public class ProdutoDAO {
private Session session;
private static ProdutoDAO referencia;
private Transaction transaction;

//Seguindo Design Pattern Singleton
private ProdutoDAO() {
	this.session=HibernateFactory.getSession();		
}

public static ProdutoDAO getInstance() {
	if(referencia==null){
		return new ProdutoDAO();
	}
	return referencia;
}

public void  salva(Produto p) {
	this.transaction=this.session.beginTransaction();
	this.session.save(p);		
	this.transaction.commit();
}

public void remove(Produto p) {
	this.session.delete(p);		
}

public Produto procura(int id) {
	return (Produto)this.session.load(Produto.class, id);		
}

public void atualiza(Produto p) {
	this.session.update(p);
}

}
[/code]

Algo mais, é só falar…
Vlw!

Estou usando para gerar sequencialmente da seguinte forma, e esta funcionando testa ae:

@Id @SequenceGenerator(name = "seqCidade", sequenceName = "System.\"seqCidade\"", initialValue=1, allocationSize=0) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seqCidade") @Column(name="codigo") private Integer cod;

Leonardo,

Fiz da mesma forma que vc passou e testei, alterando alguns nomes.

@Id @SequenceGenerator(name="idCad",sequenceName="System.\"idCad\"", initialValue=1,allocationSize=0) @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="idCad") @Column(name="id") private int id;

Mas gerou o seguinte erro na sintaxe:

4867 [main] WARN org.hibernate.util.JDBCExceptionReporter - SQL Error: 20000, SQLState: 42X01 4867 [main] ERROR org.hibernate.util.JDBCExceptionReporter - Syntax error: Encountered "System" at line 1, column 20.

Até mudei o nome da sequência, colocando um nome qualquer só para teste e o erro persiste.
Vlw!

Onde está System altere e coloque o nome do shema que vc esta utilizando.
Qualquer dúvida poste ae.
Abraço

@Id @Basic(optional = false) @SequenceGenerator(name = "AlgumaCoisa", sequenceName = "ESQUEMA.SEQUENCIA", initialValue=1, allocationSize = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "AlgumaCoisa") @Column(name = "NOMECOLUNA", nullable = false) private Long nomeColuna;

minhas sequences sao bem parecidas com as do amigo.

para maiores esclarecimentos entre neste site e veja a apostila de Hibernate com Anotations:
http://www.j2eebrasil.com.br/mostrar/97
Abraço

[quote=leonardoMachado]para maiores esclarecimentos entre neste site e veja a apostila de Hibernate com Anotations:
http://www.j2eebrasil.com.br/mostrar/97
Abraço[/quote]

Li a apostila e resolveu…
Fiz de outra forma, mas o importante é que o negócio funcionou! :smiley:
Vlw!

blz…
essa apostila sempre me salva tambem…heheheheh
qualquer duvida posta ae…
abraço