Hibernate - geracao automatica sequence detalhe

Pessoal,
estou com uma dúvida para geração automatica de sequencia. Tenho uma tabela Detail com :


      <composite-id  >
           <key-many-to-one name="dadosPedido" column="COD_PEDIDO" class="br.com.teste.Pedido  />
             <key-property name="seqItem" column="SEQ_ITEM" type="int"/>
        </composite-id>

Como faço para gerar automaticamente a sequencia do item ?

Pedro

Vamos lá…

Você usa Sequence numa PK númerica auto-incremental, isso quer dizer que esse valor é único, então não faz sentido vc ter uma sequence numa chave composta, tendeu?

o Hibernate sabe disso, então ele não deixa vc ter uma chave composta com um dos campos auto-increment…

o problema está no mapeamento do seu banco…

espero ter ajudado,

flw

Pedro,
entendo, mas como faço para a sequencia do item incrementar automaticamente pelo hibernate ?

eu preciso de algo assim :
Pedido 1 ------>
– Detalhe pedido 1 - seq 1 - item x
– Detalhe pedido 1 - seq 2 - item y
– Detalhe pedido 1 - seq 3 - item z

Pedido 2 ------>
– Detalhe pedido 2 - seq 1 - item x
– Detalhe pedido 2 - seq 2 -item y

vou ter que incremetar a sequencia na mão mesmo , com select (max) …?

Pedro

vc tem um relacionamento 1…N certo? 1 Pedido - N Itens

pra q vc precisa dessa sequencia? isso eh realmente necessário?

pq o lance é vc fazer um relacionamento one-to-many simples e manda bala…sem chave composta…

mas como ficaria a tabela de items ? ela precisa ser chave composta contendo nroPedido e sequencia, senão daria chave duplicada ao inserir o segundo registros, não é ?
Como devo ‘dizer’ ao hibernate que no momento da inserção desse segundo registro a chave deve ser incrementada em mais 1(seqitem) ? como no exemplo que passei :?

Grato

Pedro

cara, acho q entendi o q vc quer…enato o lance deve ser assim:

1 Pedido … N Itens … 1 Produto

Na tabela Itens vc vai ter uma chave composta montada com a PK do Pedido + a PK do Produto, e vai ter mais infos como qtd, seq, valor total do item, etc…

Então vc tem a sua Tabela Pedido, que contém varios Itens, e cada Item desse equivale a 1 Produto…ou seja um Produto pode estar em varios Itens, só q de Pedidos diferentes

sera q isso ajudou???

seria assim , o bom e velho Header/Detail :

entendeu ?

Pedro

entendi sim…mas aih eh q esta

pra q serve esse campo seq_det ??? pra determinar a ordenação de DetalhePedido? se for soh isso, não precisa ser PK…

1 Pedido tem qts DetalhePedido ??? Pelo q eu entendi, DetalhePedido, são os Itens do Pedido com a info de qtd, ou seja, 1 Pedido tem N DetalhePedido, e 1 Item pode estar em N DetalhePedido, certo?

como eu te falei anteriormente, o q vc esta fazendo não eh um Header/Detail, e sim um many-to-many com parametros a mais na tabela associativa, alem das PKs…

Pedi do - 1…N - DetalhePedido - N…1 - Item

Tabela Pedido :
nroPedido (PK)
id_Cliente
id_endereEntrega
vlr_pedido

Tabela DetalhePedido :
nroPedido (pk)
id_item (pk)
seq_det
qtde

Tabela Item :
id_item (pk)
descricao
valor

bom, pelo menos foi isso q eu entendi…

flw

vc está correto, mas sabe como é, o banco já foi criado assim(leia-se legado) . Para cada registro do detalhePedido ele incrementa um na sequencia. Ex:

Como transformar isso para o hibernate sem mexer no banco ?

Pedro

aaaaaahhhhhhhh…

eu achei q vc pudesse mexer no banco…com o Hibernate vc nao vai conseguir mapear uma sequence dentro de uma chave composta…pode xingar quem modelou esse banco, hehehehehehehe…pra conseguir mapear com o hibernate, a modelagem do banco tem q ser bem feita, eu ja passei por uma situação igual a sua, mas tive a liberdade de mexer no banco…

isso é teoria de banco de dados, chave-primaria númerica e auto-incremental é única, então não faz sentido ter uma PK composta com auto-increment…

vc realmente vai ter q fazer alguma coisa manualmente nesse caso aih…

flw