Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Problema com toString

Quando eu coloco escrevo o toString tenho o erro a seguir, isso ocorre apenas com o toString quando n tem ele imprime o endereço de memoria sem erro.

repare que ele esta fazendo o select na tabela da forma correta

Hibernate: 
    select
        cargo0_.id as id1_0_,
        cargo0_.descricao as descrica2_0_ 
    from
        cargos cargo0_
2022-02-01 00:27:44.657  INFO 6794 --- [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-02-01 00:27:44.680 ERROR 6794 --- [           main] o.s.boot.SpringApplication               : Application run failed

java.lang.IllegalStateException: Failed to execute CommandLineRunner
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:772) ~[spring-boot-2.6.3.jar:2.6.3]
    at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:753) ~[spring-boot-2.6.3.jar:2.6.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:309) ~[spring-boot-2.6.3.jar:2.6.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1303) ~[spring-boot-2.6.3.jar:2.6.3]
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1292) ~[spring-boot-2.6.3.jar:2.6.3]
    at br.com.spring.data.Application.main(Application.java:27) ~[classes/:na]
Caused by: org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: br.com.spring.data.model.Cargo.funcionario, could not initialize proxy - no Session
    at org.hibernate.collection.internal.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:612) ~[hibernate-core-5.6.4.Final.jar:5.6.4.Final]
    at org.hibernate.collection.internal.AbstractPersistentCollection.withTemporarySessionIfNeeded(AbstractPersistentCollection.java:218) ~[hibernate-core-5.6.4.Final.jar:5.6.4.Final]
    at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:591) ~[hibernate-core-5.6.4.Final.jar:5.6.4.Final]
    at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:149) ~[hibernate-core-5.6.4.Final.jar:5.6.4.Final]
    at org.hibernate.collection.internal.PersistentBag.toString(PersistentBag.java:621) ~[hibernate-core-5.6.4.Final.jar:5.6.4.Final]
    at java.base/java.lang.String.valueOf(String.java:2951) ~[na:na]
    at java.base/java.lang.StringBuilder.append(StringBuilder.java:168) ~[na:na]
    at br.com.spring.data.model.Cargo.toString(Cargo.java:17) ~[classes/:na]
    at java.base/java.lang.String.valueOf(String.java:2951) ~[na:na]
    at java.base/java.io.PrintStream.println(PrintStream.java:897) ~[na:na]
    at br.com.spring.data.service.CrudCargoService.lambda$0(CrudCargoService.java:78) ~[classes/:na]
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1541) ~[na:na]
    at br.com.spring.data.service.CrudCargoService.visualizar(CrudCargoService.java:78) ~[classes/:na]
    at br.com.spring.data.service.CrudCargoService.inicial(CrudCargoService.java:38) ~[classes/:na]
    at br.com.spring.data.Application.run(Application.java:46) ~[classes/:na]
    at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:769) ~[spring-boot-2.6.3.jar:2.6.3]
    ... 5 common frames omitted

2022-02-01 00:27:44.683  INFO 6794 --- [           main] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'
2022-02-01 00:27:44.687  INFO 6794 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown initiated...
2022-02-01 00:27:44.693  INFO 6794 --- [           main] com.zaxxer.hikari.HikariDataSource       : HikariPool-1 - Shutdown completed.

Estou escrevendo o método visualizar dessa forma:

    private void visualizar() {
        Iterable<Cargo> cargo = cargoRepository.findAll();
        cargo.forEach(cargos -> System.out.println(cargos));
    }
2 respostas

Classe Application.java a "view" esta dessa forma, pode ser um problema nessa classe

package br.com.spring.data;

import java.util.Scanner;

import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import br.com.spring.data.service.CrudCargoService;
import br.com.spring.data.service.CrudFuncionarioService;
import br.com.spring.data.service.CrudUnidadeTrabalhoService;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

@SpringBootApplication
@RequiredArgsConstructor
public class Application implements CommandLineRunner{

    @NonNull
    private final CrudCargoService cargoService;
    private final CrudFuncionarioService funcionarioService;
    private final CrudUnidadeTrabalhoService unidadeService;

    private Boolean system = true;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override

        Scanner sc = new Scanner(System.in);

        while (system) {

            System.out.println("0 - Sair");
            System.out.println("1 - Cargo");
            System.out.println("2 - Funcionario");
            System.out.println("3 - Unidade");

            int action = sc.nextInt();

            switch (action) {
            case 1:
                cargoService.inicial(sc);
                break;
            case 2:
                funcionarioService.inicial(sc);
                break;
            case 3:
                unidadeService.inicial(sc);
                break;
            default:
                system = false;
                break;
            }

        }
    }    
}
solução!

Gente eu resolvi aqui estava usando o lombok para escrever o Tostring e deixair de usar, ele estava tentado trazer resultados que precisavam de um join so que eu n estava fazendo ai dava o erro.