Problemas ao persistir classe Pai com Filhos atraves de um PaiDAO, usando CascadeType.ALL

Olá galerinha da comu!!!

Entendam o mapeamento das seguintes classes abaixo:

Classe pai possui muitos filhos

@Entity
public class Pai {
      
      @Id
      @GeneratedValue
      private Long id;

      @OneToMany(mappedby="pai", cascade = CascadeType.ALL)
      private List<Filho> filhos;

      .... getters and setters .....

}

e a classe filho pertence a um pai:

@Entity
public class Filho {
      
      @Id
      @GeneratedValue
      private Long id;

      @ManyToOne
      private Pai pai;

      .... getters and setters .....

}

e um DAO exclusivo para cadastrar um Pai que ja possua um filho (PaiDAO):

@Component
public class PaiDAO {
      
       private Session session;
       
       public PaiDAO(Session session){
               this.session = session;
       }

       // No metodo save ou update, eu passo um Pai, ja contendo uma lista com todos os seus filhos presentes vindos de um cadastro.
       public void save(Pai pai){
              // Ai eu persisto o pai, para conseguir dele um novo Id gerado pelo banco.
              session.save(pai);

              // Por falta de conhecimento sobre mapeamento, sou obrigado a fazer apos dar um save() do pai, esse loop em todos os filhos para settar o objeto pai neles, para fazer o Hibernate entender que um filho eh de um pai.
              // E o que desejo fazer eh salvar um pai ja contendo todos os filhos sem precisar dessa Gambiarra!! E mesmo usando CascadeType.ALL nao funciona um save sem rodar os loops depois.
              for(Filho filho: pai.getFilhos()){
                     filho.setPai(pai);
              }
       }

        .... outros metodos CRUD ....
}

gostaria de saber alguem tem uma opiniao para resolver esse problema?

A versão do Hibernate que uso eh Hibernate 3.5.6-FINAL as anotações utilizo a maioria do pacote javax.persistence.

Desde já fico grato pela atenção :smiley:

@ManyToOne
@JoinColumn (name=“FILHO_ID”, updatable = true, insertable = true)
private Pai pai;

FILHO_ID deve ser o nome da coluna no relacionamento.

Uma hora depois de postado esse problema eu descobri que a solução era exatamente igual a sua!!

muito obrigado!!!

fico feliz que tenha resolvido.

Por favor, coloque [RESOLVIDO] no titulo do topico.

Pronto Resolvido!

Estou tentando fazer isso e não consigo, já que resolveu poderia postar seu código completo do DAO?

Desde já agradeço.