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 