Olá, Estou desenvolvendo uma API Rest que cadastra clientes, porém, ao tentar persistir os dados, eu recebo a seguinte NullPointException:
java.lang.NullPointerException: Cannot invoke "br.com.syshotel.api.domain.clientes.PessoaFisicaRepository.save(Object)" because "this.pessoaFisicaRepository" is null
Esta é a classe PessoaFisica
package br.com.syshotel.api.domain.clientes;
@Entity
@Table(name="pessoa_fisica")
@Getter
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id")
public class PessoaFisica extends Cliente {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
String nome;
String cpf;
@Column(name = "data_nascimento")
LocalDate dataNascimento;
public PessoaFisica(DadosCadastroPessoaFisica dados) {
this.nome = dados.nome();
this.cpf = dados.cpf();
this.dataNascimento = dados.dataNascimento();
}
}
Esta é a interface PessoaFisicaRepository
package br.com.syshotel.api.domain.clientes;
import org.springframework.data.jpa.repository.JpaRepository;
public interface PessoaFisicaRepository extends JpaRepository<PessoaFisica, Long> {
}
O DTO DadosCadastroClientes
package br.com.syshotel.api.domain.clientes;
import java.time.LocalDate;
public record DadosCadastroPessoaFisica(
String nome,
String cpf,
LocalDate dataNascimento
) {
}
O Meu ClienteController
package br.com.syshotel.api.controller;
@RestController
@RequestMapping("/clientes")
public class ClienteController {
@Autowired
private PessoaFisicaRepository pessoaFisicaRepository;
@PostMapping
@Transactional
private void cadastra(@RequestBody DadosCadastroPessoaFisica dados){
var cliente = new PessoaFisica(dados);
System.out.println(dados.nome());
System.out.println(dados.cpf());
System.out.println(dados.dataNascimento());
pessoaFisicaRepository.save(cliente);
}
}
É como se a variável cliente que eu instanciei na classe controller, estivesse null. Mas, como vocês podem ver, eu sei um sysout nos dados da variável cliente e eles estão lá. É como se o Spring não tiversse fazendo as injeções de dendência, não sei falata alguma anotação... Alguém poderia me ajdar?