1
resposta

Problemas ao fazer consulta com o findAll()

Ao tentar executar o findAll() ele retorna o model, e não os dados do banco. Como resolver isso?

Saida:

br.com.mvv.Gerencia_de_Etapas.model.Empresa@6ad26381 br.com.mvv.Gerencia_de_Etapas.model.Empresa@353422fd br.com.mvv.Gerencia_de_Etapas.model.Empresa@654cb30c br.com.mvv.Gerencia_de_Etapas.model.Empresa@5cc669d br.com.mvv.Gerencia_de_Etapas.model.Empresa@351be56b

Model package br.com.mvv.Gerencia_de_Etapas.model;

import jakarta.persistence.*;

@Entity

public class Empresa {

private String nome;
private String contrato;
private String status;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;

public Empresa(String nome, String contrato, String status, Integer id) {
    this.nome = nome;
    this.contrato = contrato;
    this.status = status;
    this.id = id;
}

public Empresa(Integer id) {
    this.id = id;
}

public Empresa() {
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getContrato() {
    return contrato;
}

public void setContrato(String contrato) {
    this.contrato = contrato;
}

public String getStatus() {
    return status;
}

public void setStatus(String status) {
    status = status;
}

public Integer getId() {
    return id;
}

public void setId(Integer id) {
    this.id = id;
}

}

Classe Principal

package br.com.mvv.Gerencia_de_Etapas.principal;

import br.com.mvv.Gerencia_de_Etapas.model.Empresa; import br.com.mvv.Gerencia_de_Etapas.repository.EmpresaRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean;

import java.util.List; import java.util.Optional; import java.util.Scanner;

public class Principal { private Scanner scan = new Scanner(System.in); private Integer id; private String nome; private String contrato; private String status; private Integer esc = -1;

private EmpresaRepository repositorio;

public Principal(EmpresaRepository repositorio) {
    this.repositorio = repositorio;
}

public void exibeMenu(){

    while(esc != 0){

        esc = scan.nextInt();
        scan.nextLine();

        if(esc == 1){

            System.out.println("Digite o nome da empresa: ");
            nome = scan.nextLine();

            System.out.println("Digite o ID: ");
            id = scan.nextInt();
            scan.nextLine();

            System.out.println("Digite o contrato: ");
            contrato = scan.nextLine();

            System.out.println("Digite o status: ");
            status = scan.nextLine();

            Empresa empresa = new Empresa(nome, contrato, status, id);
            repositorio.save(empresa);

        }else if(esc == 2){


            List<Empresa> empresas = repositorio.findAll();
            empresas.stream()
                    .forEach(System.out::println);

            Optional<Empresa> empresaBuscada = repositorio.findByNomeIgnoreCase("MVV");

// if(empresaBuscada.isPresent()){ // System.out.println(empresaBuscada.get()); // }

        }else if(esc == 0){

            System.out.println("Saindo...");

        }else{
            System.out.println("Opção Invalida!");
        }

    }

}

}

Repository package br.com.mvv.Gerencia_de_Etapas.repository;

import br.com.mvv.Gerencia_de_Etapas.model.Empresa; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository;

import java.util.List; import java.util.Optional;

@Repository public interface EmpresaRepository extends JpaRepository<Empresa, Integer> { //List findAll(); Optional findByNomeIgnoreCase(String nome); }

1 resposta

Olá, José! Tudo joia?

A saída que você está vendo é a representação padrão do objeto da classe Empresa. Isso acontece porque a classe Empresa não tem um método toString() personalizado.

Para resolver isso, você pode sobrescrever o método toString() na sua classe Empresa. Esse método é responsável por retornar uma representação em String do objeto. Quando você tenta imprimir o objeto diretamente, como no System.out::println, o método toString() é chamado.

Aqui está um exemplo de como você poderia implementar o método toString() na sua classe Empresa:

@Override
public String toString() {
    return "Empresa{" +
            "nome='" + nome + '\'' +
            ", contrato='" + contrato + '\'' +
            ", status='" + status + '\'' +
            ", id=" + id +
            '}';
}

Com essa implementação, quando você chamar System.out::println para um objeto Empresa, você verá a saída no formato Empresa{nome='nomeDaEmpresa', contrato='contratoDaEmpresa', status='statusDaEmpresa', id=idDaEmpresa}.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.