Tenho duas classes anotadas pelo Hibernate.
Sendo que a classe A tem o atributo id, e a segunda classe B tem o atributo id_A da classe A.
Como eu faço utilizando o vraptor, para salvar a classe A e depois pegar o id da classe A e salvar a classe B?
Valeu!
[code]public class A {
private long id;
// outros atributos
// getters e setters
}
public class B {
private long id;
@ManyToOne(cascade=CascadeType.PERSIST)
private A a;
// alguns atributos
// getters e setters
}[/code]
Para fazer isso funcionar, basta inserir um ‘B’ com o atributo ‘a’ preenchido.
Então… Toma bastante cuidado para fazer relacionamentos bidirecionais (ou seja A tem uma lista de Bs E B tem um A).
Prefira sempre onde não há uma lista.
Se você realmente precisa dessa lista, considere em remover o outro atributo. EVITE o relacionamento bidirecional.
Quando você vai inserir os dados, você tem o ID de cada um. O hibernate sabe como fazer esse relacionamento para você.
Basta você ter o atributo dentro do outro.
[quote=Rafael Guerreiro]Então… Toma bastante cuidado para fazer relacionamentos bidirecionais (ou seja A tem uma lista de Bs E B tem um A).
Prefira sempre onde não há uma lista.
Se você realmente precisa dessa lista, considere em remover o outro atributo. EVITE o relacionamento bidirecional.
[/quote]
Relacionamentos é o trivial no armazenamento em banco de dados e de supra importancia, e nas boas praticas de uso do hibernate o aconselhavel é sempre usar relacionamentos BIDIRECIONAIS.
em resposta a sua pergunta, basta vc colocar na lista de A os diversos B e em B o objeto A e ai quando vc mandar persistir o Hibernate vai saber mandar os inserts, lembre que os esses inserts são efetuados de diversas formas dependendo da forma que vc faz os mapeamentos(inclusive de formas não muito inteligentes), mas sempre que precisar de relacionamentos vc deve usar e sempre de forma bidirecionais outra coisa, ta com duvida, cria uma classe com Main() e habilita o log e vai testando e não esqueça de olhar a documentação oficial do hibernate.