Classe na Session - Vraptor

6 respostas
101574

Galera,

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!

6 Respostas

Rafael_Guerreiro

Tudo bem?

Vamos lá:
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
}
Para fazer isso funcionar, basta inserir um 'B' com o atributo 'a' preenchido.
101574

Tudo tranquilo mano!
Isso eu ja fiz!
Agora, por exemplo.
O B é uma lista em A.
Como ele vai saber qual id de A pertence a qual B?

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.

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.

101574

Vou tentar aqui.
Valeu.
E imprescidivel, esse relacionamento.

P

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.

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.

P

101574,

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.

Criado 17 de setembro de 2012
Ultima resposta 17 de set. de 2012
Respostas 6
Participantes 3