Consultando sequence

5 respostas
G

Alguém sabe como retornar o valor de um nextvall(sequence) em hibernate na inserção de um novo registro em uma tabela (mas não na coluna idde tabela, em uma coluna qualquer ) ?

5 Respostas

mister_m

Não entendi direito, George, poderia explicar melhor?

G

O problema é o seguinte:
tenho uma tabela que tem 2 sequenciais, o sequencial que é o id da tabela e outro sequencial que é outra coluna da tabela (esse segundo não faz parte da chave da tabela). No caso do id sei que se põe

<generator class="sequence">
      <param name="sequence">SEQ_DEFAULT</param>
</generator>

mas no caso de a mesma tabela no mesmo hbm precisar de outra sequence não sei como proceder, tentei:

<property name="nome" column="nome" type="text" not-null="true">
      <param name="sequence">SEQ_DEFAULT</param>
</property>

porém sem sucesso, dei uma olhada no “hibernate in action” porém
não encontrei nenhum exemplo, então se alguém que já tiver passado por essa situação ou souber como resolver isso e puder me ajudar ficarei muito grato.

George.

mister_m

A menos que tenham mudado isso no Hibernate 3, você tem duas saídas: pegar o próximo valor da sequence usando um SELECT seq.nextval from DUAL e atribuir manualmente à propriedade ou criar uma trigger de insert que faça isso por você.

G

é, já pensei nas duas soluções mas queria fazer isso pelo hibernate, não queria fazer esse select na mão e tb o uso de trigger seria uma segunda opção que pelo que estou vendo é a mais válida.

existe alguma maneira de fazer esse “select nextvall(sequence)” por hibernate ? acredito que não né ?

valeu pela força !

mister_m

No 2, não que eu saiba. Outra solução “menos feia” poderia ser escrever um custom EntityPersister que faz isso que você falou. O EntityPersister é ortogonal ao resto do código de persistência, o que deixaria a solução mais limpa.

Criado 10 de abril de 2005
Ultima resposta 11 de abr. de 2005
Respostas 5
Participantes 2