Boa tarde pessoal,
Trabalho com vRaptor há algum tempo utilizando JPA/Hibernate (vraptor-jpa). Porém, sempre que eu preciso persistir uma entidade que tenha um relacionamento @OneToMany tenho que iterar sobre todos os objetos da lista e atribuir o objeto de relacionamento entre as entidades.
Por exemplo, dada a classe Curso que contenha uma lista de Disciplinas, terei o seguinte relacionamento:
/**
* Classe Curso
*/
@Entity
public class Curso implements Serializable {
...
@OneToMany(mappedBy = "curso", cascade = {CascadeType.PERSIST})
private List<Disciplina> disciplinaList;
...
}
/**
* Classe Disciplina
*/
@Entity
public class Disciplina implements Serializable {
...
@ManyToOne
@JoinColumn(name = "codCurso")
private Curso curso;
...
}
No método responsável por persistir a entidade Curso, atualmente, tenho que fazer a segunda operação para que a persistência aconteça:
/**
* Classe CursoController
*/
@Controller
@Path("/curso")
public class CursoController {
...
@Post("/cadastra")
private void cadastra(Curso curso) {
curso.getDisciplinaList().stream().each(d -> d.setCurso(curso));
cursoDAO.insere(curso);
...
}
...
}
Dessa maneira, consigo persistir as entidades sem maiores problemas. Porém, para cada relacionamento @OneToMany que uma entidade tiver, terei de percorrer todos os elementos da lista assim como explanado no exemplo acima.
A pergunta que fica é: existe alguma forma de passar esse relacionamento entre cada objeto da lista de disciplinas e o objeto curso na requisição sem que seja necessário fazer toda essa iteração antes de persistir o objeto curso?
Obrigado!