Estou fazendo uma Api com java com Spring boot,
e gostaria que ele buscasse pelo CPF e nao pelo ID;
http://localhost:8080/pacientes/ID
http://localhost:8080/pacientes/Cpf (sera informado pelo usuario) http://localhost:8080/pacientes/cpf->http://localhost:8080/pacientes/77777785558 e tenho o seguinte campos na classe PACIENTE;
o ID gostaria de deixar como esta, para ele criar,deleta, e alterar, na url, gostaria de buscar pelo CPF. __CLASE DOMAIN__ @Entity public class Paciente implements Serializable{ private static final long serialVersionUID = 1L;
@Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id;
private Long cpf; private String nome;
public Paciente() { } public Paciente(Integer id,Long cpf, String nome) { super(); this.id = id; this.cpf = cpf this.nome = nome; }
[.gets sets.]
__PacienteRepository_ @Repository public interface PacienteRepository extends JpaRepository {
}
_PacienteResource__ @RestController @RequestMapping(value = "capientes") public class PacienteResource {
@Autowired PacienteService PacienteService;
@GetMapping(value = "/{id}") public ResponseEntity buscar(@PathVariable Integer id) { Paciente obj = PacienteService.findId(id); return ResponseEntity.ok().body(obj);
}
_PacienteService_
@Service public class PacienteService {
@Autowired PacienteRepository repo;
public Paciente findId(Integer id) { Optional obj = repo.findById(id); return obj.orElseThrow(() -> new ObjectNotFoundException("Objeto não encontrado! ID: " + id + ", Tipo"+ PacienteService.class.getName()));
}
public Paciente insert (Paciente obj) { obj.setId(null); return repo.save(obj); } public Paciente update (Paciente obj) { findId(obj.getId()); return repo.save(obj); } public void delete(Integer id) { findId(id); try { repo.deleteById(id); } catch (DataIntegrityViolationException e) { throw new DateIntegrityException("Não é possível excluir uma Paciente ");
}
} }
está funcionado , porem eu preciso ao invés de buscar pelo ID, quero buscar pelo cpf, que a pessoa ira informa, ficando assim:
http://localhost:8080/pacientes/77777788898788
Hoje ele esta buscando paciente somente pelo ID