Hibernate e sequence, e o firebird

6 respostas
agnm

colegas,
tenho o db que gera uma sequencia de id automaticamente,
estou usando o hibernate

<id name="bairId" type="java.lang.Integer" >
			<generator class="sequence">
				<param name="sequence">genBairId</param> 
			</generator>	
		</id>
private Integer bairId;
   
   public Integer getBairId()                { return bairId; }
   public void setBairId(Integer arg0)        { bairId = arg0; }
tx = ss.beginTransaction();
         bairId = ss.save(bairro);
         tx.commit();

o problema:
o valor retornado pelo método save é diferente do valor da chave na tabela

tem como resolver isso sem desabilitar o trigger de inserção da tabela ?

6 Respostas

wandersonxs

Como assim, de um exemplo, ou uma explicação mais detalhada do q ocorre?
:thumbup:

Wanderson

agnm

na tabela, a cada registro inserido o id vem de 2 em 2, seria como se ao incluir o registro na tabela, o gerador de sequencia fosse disparado mais de uma vez, (uma pelo trigger e outra pela aplicação)
o que eu preciso e que a aplicação não gera um id, para que o banco para gerá-lo apenas uma vez (no trigger)

_fs

Pode postar o SQL gerado pelo Hibernate e o código entre o trans.begin e commit?

agnm

http://www.guj.com.br/posts/list/0/24600.java#131916

agnm

a solução:

<id name="bairId" type="java.lang.Integer" >
			<generator class="select">
				<param name="key">bairNome</param> 
			</generator>	
		</id>
		
		<property name="bairNome" type="string" unique="true" not-null="true" />

com ajuda até parece brincadeira de criança pequena.

agnm

pena que a migração para hsqldb não é mais natural.

Criado 19 de maio de 2005
Ultima resposta 19 de mai. de 2005
Respostas 6
Participantes 3