java—如何使用SpringBoot创建动态存储库对象

dy2hfwbg  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(169)

这个错误我需要一些帮助。
我需要创建一个函数,使用@autowired到我的模型客户端,但当我做弹出窗口,我得到这个错误
java.lang.nullpointerexception:无法调用“com.teste.cadastro.repository.clienterepository.findcpf(string)”,因为“this.clienterepository”为null`
我正在尝试动态地创建这个@autowired对象,但没有成功,如果我们中有人知道如何做到这一点,请告诉我,我将非常感激。
客户端.java

package com.teste.cadastro.model;

import java.sql.Date;
import java.util.HashMap;
import java.util.InputMismatchException;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import org.springframework.beans.factory.annotation.Autowired;

import com.teste.cadastro.repository.ClienteRepository;

@Entity
@Table(name="clientes")
public class Cliente{

    @Autowired
    ClienteRepository clienteRepository;    

    private long id;

    private String nome;
    private String email;
    private String cpf;
    private Date   dta_nasc;

    public Cliente() {

    };

    public Cliente(long id, String nome, String email, String cpf) {
        super();
        this.id = id;
        this.nome = nome;
        this.email = email;
        this.cpf = cpf;
    }

    public Date getDta_nasc() {
        return dta_nasc;
    }

    public void setDta_nasc(Date dta_nasc) {
        this.dta_nasc = dta_nasc;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    public String getCpf() {
        return cpf;
    }
    public void setCpf(String cpf) {
        this.cpf = cpf;
    }
    @SuppressWarnings("deprecation")
    public HashMap<String, String> valido() {
        HashMap<String, String> aceito = new HashMap<String, String>();
        if (nome.length()>10)
            aceito.put("nome_valid", "");
        else
            aceito.put("nome_valid", "O nome deve ter mais que dez caracteres");

        if (ValidaCPF(cpf))
            if (clienteRepository.findCPF(cpf).size()>0)
                aceito.put("cpf_valid", "");
            else
                aceito.put("cpf_valid", "CPF Já cadastrado");
        else
            aceito.put("cpf_valid", "CPF Informado é invalido");

        if (!(dta_nasc == null)) {
        if (dta_nasc.getDate() == 0)
            aceito.put("dta_nasc_valid", "Data informada invalida");
        else
            aceito.put("dta_nasc_valid", "");
        }
        else
            aceito.put("dta_nasc_valid", "Erro na validação da data, informe novamente");

        if (email.contains("@")) 
            aceito.put("email_valid",  "");
        else
            aceito.put("email_valid",  "Email informado invalido");

        if ((aceito.get("nome_valid").length()==0) && (aceito.get("cpf_valid").length()==0) && (aceito.get("dta_nasc_valid").length()==0) && (aceito.get("email_valid").length()==0)) 
            aceito.put("valido", "1");
        else
            aceito.put("valido",  "0");

        return aceito;
    }

private boolean ValidaCPF(String CPF) {

        CPF = CPF.replace(".", "");
        CPF = CPF.replace("-", "");

        if (CPF.equals("00000000000") ||
            CPF.equals("11111111111") ||
            CPF.equals("22222222222") || CPF.equals("33333333333") ||
            CPF.equals("44444444444") || CPF.equals("55555555555") ||
            CPF.equals("66666666666") || CPF.equals("77777777777") ||
            CPF.equals("88888888888") || CPF.equals("99999999999") ||
            (CPF.length() != 11))
            return(false);

        char dig10, dig11;
        int sm, i, r, num, peso;

        try {
            sm = 0;
            peso = 10;
            for (i=0; i<9; i++) {
            num = (int)(CPF.charAt(i) - 48);
            sm = sm + (num * peso);
            peso = peso - 1;
            }

            r = 11 - (sm % 11);
            if ((r == 10) || (r == 11))
                dig10 = '0';
            else dig10 = (char)(r + 48); 

            sm = 0;
            peso = 11;
            for(i=0; i<10; i++) {
            num = (int)(CPF.charAt(i) - 48);
            sm = sm + (num * peso);
            peso = peso - 1;
            }

            r = 11 - (sm % 11);
            if ((r == 10) || (r == 11))
                 dig11 = '0';
            else dig11 = (char)(r + 48);

            if ((dig10 == CPF.charAt(9)) && (dig11 == CPF.charAt(10)))
                 return(true);
            else return(false);
                } catch (InputMismatchException erro) {
                return(false);
            }
        }
}

客户端控制器.java

ackage com.teste.cadastro.controller;

import java.util.HashMap;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import com.teste.cadastro.model.Cliente;
import com.teste.cadastro.repository.ClienteRepository;

@RequestMapping("/")
@Controller
public class ClientController {

    @Autowired
    ClienteRepository clienteRepository;

    @CrossOrigin
    @PostMapping(value = "/reg", consumes = "application/json", produces = "application/json")
    public ResponseEntity<HashMap<String, String>> CreateRegistry(@RequestBody Cliente cliente) {
        HashMap<String, String> aceito = cliente.valido();  
        if (aceito.get("valido")=="1") {
            clienteRepository.save(cliente);    
    }

    return new ResponseEntity<>(aceito, HttpStatus.OK);
    }
}
package com.teste.cadastro.repository;

import java.util.List;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;

import com.teste.cadastro.model.Cliente;

@Repository
public interface ClienteRepository extends JpaRepository<Cliente, Long>{

    @Query(value= "SELECT u FROM Cliente u WHERE u.cpf = :cpf" , nativeQuery = false)
    List<Cliente> findCPF(String cpf);

}

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题