vRaptor - Passar uma lista de objetos pronta para persistir como parâmetro para um Controller

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!

Até onde sei, já receber o curso setado na disciplina no endpoint não é possível pq trata-se de ter uma referência atribuída e não um simples valor.

O que vc pode fazer é tentar tratar isso no método setDisciplinaList. Algo mais ou menos assim:

public void setDisciplinaList(List<Disciplina> disciplinaList) {
    this.disciplinaList = disciplinaList;
    this.disciplinaList.stream().each(d -> d.setCurso(this));
}

Assim, no momento em que a classe for criada e as propriedades setadas, a referência do curso já estará devidamente atribuída. É uma tentativa.

Muito obrigado pela resposta @Lucas_Camara… já acreditava que não seria possível mesmo mas gostaria de ter a certeza sobre isso… sobre a recomendação de deixar a lógica nos setters já faço isso! Marquei sua resposta como solução já que a solução apresentada é a forma que soluciono o problema atualmente.