3
respostas

Lazy exception Spring data em consultas

Bom dia, possuo um erro com um a lazy exception, tento mudar para lazy para melhor performance e não consigo fazer uma consulta pois gera um erro, consigo salvar no banco, quando coloco o FecthType Eager ele não consegue rodar multiplas entidades ao mesmo tempo

3 respostas

@Getter @Setter @Entity @Table (name = "cliente") public class Cliente {

@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column (name = "id_cliente")
private Long id;

public Cliente() {
}

public Cliente(String nome, int idade, String cpf) {
    this.nome = nome;
    this.idade = idade;
    this.cpf = cpf;

}

private String nome;
private int idade ;

private String cpf;



@OneToMany (mappedBy = "cliente", fetch = FetchType.EAGER)
private List <Pet> pet = new ArrayList<>();


@OneToMany (mappedBy = "cliente", fetch = FetchType.EAGER)
private List<Racao> racao = new ArrayList<>();

// @JoinTable(name = "cliente_racao", // joinColumns = {@JoinColumn(name = "racao_fk")}, // inverseJoinColumns = {@JoinColumn(name = "cliente_fk")}) @Override public String toString() { return "Cliente{" + "id=" + id + ", nome='" + nome + ''' + ", idade=" + idade + ", cpf='" + cpf + ''' + ", pet=" + pet + ", racao=" + racao + '}'; } }

@Entity @Table (name = "pet") public class Pet {

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

@Column (name = "animaisEstimacao")
private String animal;

private String nome;

private String raca;

private double peso;

public Pet() {
}

public Pet(Cliente cliente) {
    this.cliente = cliente;
}

@ManyToOne()
@JoinColumn(name ="cliente_id" , nullable = false)
private Cliente cliente;

}

public class Racao {

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

private String nome;

private String marca;

@ManyToOne()
@JoinColumn(name ="cliente_id" , nullable = false)
private Cliente cliente;

}

Olá Mario, tudo bem?

Pelo que entendi, você está enfrentando um problema com uma exceção lazy no Spring Data em consultas. É importante lembrar que o uso de FetchType.LAZY é recomendado para melhorar a performance do seu sistema, mas é preciso tomar alguns cuidados para evitar erros.

Uma possível solução para o seu problema seria utilizar a anotação @Transactional em sua consulta, para que o Hibernate possa carregar os dados necessários antes de fechar a transação.

Espero ter ajudado e bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software