Estou fazendo uma vinculação onde possuo o cadastro de pessoa e para cadastrar o meu profissional eu busco os dados do cadastro de pessoas. Até ai tudo bem. Porém quando vou fazer a validação se a pessoa já existe como profissional estou recebendo a seguinte exceção:
java.lang.IllegalArgumentException: Argument [2] of type [java.lang.Long] did not match parameter type [br.com.nsistemas.apiclinica.pessoa.Pessoa (n/a)]
No meu repository, fiz a busca da seguinte forma:
public interface ProfissionalRepository extends JpaRepository<Profissional, Long> {
@Query("""
select p
from Profissional p
where
p.id_pessoa = :id_pessoa
""")
Pessoa findByPessoa(Long id_pessoa);
}
O meu service esta da seguinte forma:
public DadosDetalhamentoProfissional salvar(DadosCadastroProfissional dados) {
if (!pessoaRepository.existsById(dados.id_pessoa()) ) {
throw new ValidacaoException("A pessoa selecionada não existe.");
}
var verificaPessoaProfissional = profissionalRepository.findByPessoa(dados.id_pessoa());
if (verificaPessoaProfissional != null) {
throw new ValidacaoException("Esta pessoa já é um profissional.");
}
var pessoa = pessoaRepository.getReferenceById(dados.id_pessoa());
var addProfissional = profissionalRepository.save(new Profissional(null, pessoa, dados.carteira_profissional(),
dados.observacao(), true, dados.data_admissao(), null));
return new DadosDetalhamentoProfissional(addProfissional);
}
O meu DTO:
public record DadosCadastroProfissional(
@NotNull
Long id_pessoa,
@NonNull
String carteira_profissional,
String observacao,
Boolean status,
@NotNull
LocalDateTime data_admissao,
LocalDateTime data_desligamento) {
}
Quando eu retiro a validação, salva normalmente. Alguém poderia me ajudar?