Hibernate - Mapeamento Mestre-Detalhe

Srs,

Iniciando no Hibernate, Help, please…

Tenho duas tabelas, uma mestre, CHAMADOS, e uma detalhe desta, TAREFAS. Ou seja, pra um chamado, tenho diversas tarefas.

A PK da CHAMADOS é o campo NUMERO, incremental, usando uma sequence do Oracle, por exemplo.

A PK da TAREFAS é formada por 2 campos, um é a FK pra Chamados, o campo é NUM_CHAMADO, e o segundo é um incremental dentro de cada chamado, campo SEQUENCIA.

Os beans seriam:

public class Chamados {
private int numero;
private List tarefas;
// demais campos, getters, setters e construtores
}

public class Tarefas {
private int num_chamado;
private int sequencia;
// demais campos, getters, setters e construtores
}

Pergunta: Como faço o mapeamento dos IDs, no XML, para que eu salve um objeto “Chamados”, com o array de “Tarefas” já criado nele, e o Hibernate persista corretamente, gerando os sequenciais?

Analisei a documentação do Hibernate, ID, COMPOSITE_ID, mas não consegui entender.

Alguem pode me explicar como fazer?

Grato,
Buosi.

http://www.guj.com.br/java.tutorial.artigo.174.1.guj
tente esse tutorial…

Seria algo parecido com isso?

<hibernate-mapping>
    <class name="Chamados" table="chamados">
        <id name="numero" column="numero">
            <generator class="sequence">
                <param name="sequence">sequencia_oracle</param>
            </generator>
        </id>
        
        <bag name="tarefas">
            <key column="num_chamado"/>
            <one-to-many class="Tarefas"/>
        </bag>

    </class>

    <class name="Tarefas" table="tarefas">
       <composite-id>
              <key-many-to-one name="num_chamado" class="Chamado" column="numero"/>
              <key-property name="sequencia"/>
       </composite-id>
    </class>

</hibernate-mapping>

Entendo que sim, mas ainda tenho dúvidas:

  1. pq usar “bag” e não “set”?

  2. Essa configuração não vai me gerar a sequencia da segunda tabela, do campo “sequencia”, será que vou ter que estender a IdentifiedGenerator?

Grato,
Buosi.

1 - Bag porque você está usando List…

da documentação do hibernate…

2 - Essa realmente eu não encontrei uma forma de fazer ainda…

Ok, grato pela ajuda.

Se eu descobrir como fazer, posto aqui pra galera.

Grato,
Buosi.