Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

@OnetoMany não funciona carregamento LAZY

Olá!

Estou desenvolvendo uma API usando Spring Boot.

Defini o seguinte relacionamento entre as classes Vaga e Candidato.

Classe Vaga

@Entity
public class Vaga {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name="cargo", nullable = false, length = 50)
    private String cargo;

    @Column(name="descricao", nullable = false, length = 100)
    private String descricao;

    @Temporal(TemporalType.DATE)
    @Column(name="dt_vencimento")
    private Calendar dataVencimento;

    @OneToMany(mappedBy = "vaga", fetch = FetchType.LAZY)
    private List<Candidato> candidatos;    

Classe Candidato

@Entity
public class Candidato {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column(name="cpf", nullable = false, length = 11)
    private String cpf;

    @Column(name="nome", nullable = false, length = 100)
    private String nome;

    @Column(name="telefone", nullable = false, length = 11)
    private String telefone;

    @ManyToOne(fetch = FetchType.LAZY)
    private Vaga vaga;

Ao chamar a API o resultado é isso, mesmo colocando fetchType.LAZY

parte do Json ....

[
    {
        "id": 1,
        "cargo": "programador",
        "descricao": "programador",
        "dataVencimento": "2020-05-01T03:00:00.000+0000",
        "candidatos": [
            {
                "id": 1,
                "cpf": "11111111111",
                "nome": "tiago",
                "telefone": "11111111111",
                "vaga": {
                    "id": 1,
                    "cargo": "programador",
                    "descricao": "programador",
                    "dataVencimento": "2020-05-01T03:00:00.000+0000",
                    "candidatos": [
                        {
                            "id": 1,
                            "cpf": "11111111111",
                            "nome": "tiago",
                            "telefone": "11111111111",
                            "vaga": {
                                "id": 1,
                                "cargo": "programador",
                                "descricao": "programador",
                                "dataVencimento": "2020-05-01T03:00:00.000+0000",
                                "candidatos": [
                                    {
                                        "id": 1,
                                        "cpf": "11111111111",
                                        "nome": "tiago",
                                        "telefone": "11111111111",
                                        "vaga": {

O que devo fazer????? Independente se consulto por vaga ou por candidato retorna esse json quase infinito....

Eu gostaria de :

  • listar todos os candidatos por vaga
  • listar candidato e mostrar os dados da vaga conforme o relacionamento biredicional feitos na classe utilizando JPA.
1 resposta
solução!

A solução foi usar DTO para solucionar o problema.