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

error 500 no postman

Hibernate: select m1_0.id,m1_0.ativo,m1_0.crm,m1_0.email,m1_0.id_endereco,m1_0.especialidade,m1_0.nome,m1_0.numero_telefone,m1_0.senha from tb_medico m1_0 where m1_0.email=? Hibernate: select e1_0.id,e1_0.bairro,e1_0.cep,e1_0.cidade,e1_0.complemento,e1_0.estado,e1_0.numero,e1_0.rua from endereco e1_0 where e1_0.id=? 2023-08-22T17:26:20.390-03:00 ERROR 18244 --- [nio-8080-exec-5] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed: org.springframework.beans.NotReadablePropertyException: Invalid property 'accountNonLocked' of bean class [com.system.care.health.HealthAndCareSystem.models.Medico]: Could not find field for property during fallback access] with root cause

org.springframework.beans.NotReadablePropertyException: Invalid property 'accountNonLocked' of bean class [com.system.care.health.HealthAndCareSystem.models.Medico]: Could not find field for property during fallback access at org.springframework.data.util.DirectFieldAccessFallbackBeanWrapper.getPropertyValue(DirectFieldAccessFallbackBeanWrapper.java:55) ~[spring-data-commons-3.1.1.jar:3.1.1] at org.springframework.data.projection.PropertyAccessingMethodInterceptor.invoke(PropertyAccessingMethodInterceptor.java:70) ~[spring-data-commons-3.1.1.jar:3.1.1] at org.springframework.data.projection.ProjectingMethodInterceptor.invoke(ProjectingMethodInterceptor.java:71) ~[spring-data-commons-3.1.1.jar:3.1.1] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.0.10.jar:6.0.10] at org.springframework.data.projection.ProxyProjectionFactory$TargetAwareMethodInterceptor.invoke(ProxyProjectionFactory.java:243) ~[spring-data-commons-3.1.1.jar:3.1.1] at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184) ~[spring-aop-6.0.10.jar:6.0.10] at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:244) ~[spring-aop-6.0.10.jar:6.0.10] at jdk.proxy2/jdk.proxy2.$Proxy137.isAccountNonLocked(Unknown Source) ~[na:na] at org.springframework.security.authentication.dao.AbstractUserDetailsAuthenticationProvi

3 respostas

Oi!

Manda aqui o código da sua entidade Usuario.

Então, fiz uma pequena alteração e acabei usando a própria entidade do Médico, para logar com email e senha, da só uma olhada:

package com.system.care.health.HealthAndCareSystem.models;

import com.system.care.health.HealthAndCareSystem.dtos.medico.DadosCadastroMedico;
import com.system.care.health.HealthAndCareSystem.enums.EspecialidadeEnum;
import jakarta.persistence.*;
import lombok.*;

import java.io.Serializable;
import java.util.List;

@Entity
@Table(name = "TB_MEDICO")
@Data
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class Medico implements Serializable {
    private static final long serialVersionUID = 1L;

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

    private String nome;

    private String senha;

    private String email;

    private String crm;

    private Boolean ativo = true;

    @Enumerated(EnumType.STRING)
    @Column(name = "especialidade")
    private EspecialidadeEnum especialidade;

    private String numeroTelefone;

    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "id_endereco")
    private Endereco endereco;

    @OneToMany(mappedBy = "medico")
    public List<Consulta> consultas;

    public Medico(DadosCadastroMedico dados) {
        this.ativo = true;
        this.nome = dados.getNome();
        this.senha = dados.getSenha();
        this.email = dados.getEmail();
        this.numeroTelefone = dados.getNumeroTelefone();
        this.crm = dados.getCrm();
        this.especialidade = dados.getEspecialidade();
        this.endereco = new Endereco(dados.getEndereco());
    }

    public void excluir(){
        this.ativo= false;
    }

}
solução!

Certo, nesse caso você precisa fazer os procedimentos da classe Usuario na classe Medico. Implementar a interface UserDetails, conforme seria feito na classe Usuario.