Я делаю веб-приложение CRUD, используя Spring boot, spring mvc и Spring Data JPA. Я хотел проверить свой код в основном классе с добавлением нового клиента. Это возвращает мне NullPointerException. Я уже проверил свой код в режиме отладки. Честно говоря, я не понимаю, где именно проблема, поэтому, если это возможно, это будет приятно.
Класс сущности:
@Entity
@Table(name="cliente")
public class Cliente implements Serializable{
@Id @GeneratedValue
private Integer idCliente;
private String iceCliente;
private String nombreCliente;
private String apellidoCliente;
private String direccionCliente;
private String telefonoCliente;
private String emailCliente;
private TipoCliente tipoCliente;
private String cuidadCliente;
public Cliente() {
super();
}
public Cliente(String iceCliente, String nombreCliente, String apellidoCliente, String direccionCliente,
String telefonoCliente, String emailCliente, TipoCliente tipoCliente, String cuidadCliente) {
super();
this.iceCliente = iceCliente;
this.nombreCliente = nombreCliente;
this.apellidoCliente = apellidoCliente;
this.direccionCliente = direccionCliente;
this.telefonoCliente = telefonoCliente;
this.emailCliente = emailCliente;
this.tipoCliente = tipoCliente;
this.cuidadCliente = cuidadCliente;
}
public Integer getIdCliente() {
return idCliente;
}
public void setIdCliente(int idCliente) {
this.idCliente = idCliente;
}
public String getIceCliente() {
return iceCliente;
}
public void setIceCliente(String iceCliente) {
this.iceCliente = iceCliente;
}
public String getNombreCliente() {
return nombreCliente;
}
public void setNombreCliente(String nombreCliente) {
this.nombreCliente = nombreCliente;
}
public String getApellidoCliente() {
return apellidoCliente;
}
public void setApellidoCliente(String apellidoCliente) {
this.apellidoCliente = apellidoCliente;
}
public String getDireccionCliente() {
return direccionCliente;
}
public void setDireccionCliente(String direccionCliente) {
this.direccionCliente = direccionCliente;
}
public String getTelefonoCliente() {
return telefonoCliente;
}
public void setTelefonoCliente(String telefonoCliente) {
this.telefonoCliente = telefonoCliente;
}
public String getEmailCliente() {
return emailCliente;
}
public void setEmailCliente(String emailCliente) {
this.emailCliente = emailCliente;
}
public TipoCliente getTipoCliente() {
return tipoCliente;
}
public void setTipoCliente(TipoCliente tipoCliente) {
this.tipoCliente = tipoCliente;
}
public String getCuidadCliente() {
return cuidadCliente;
}
public void setCuidadCliente(String cuidadCliente) {
this.cuidadCliente = cuidadCliente;
}
ClienteService:
@Service
@Transactional
public class ClienteServiceImpl implements ClienteService {
@Autowired
ClienteRepository clienteRepository;
@Override
public Cliente agregarCliente(Cliente cliente) {
return clienteRepository.save(cliente);
}
@Override
public Cliente editarCliente(Cliente cliente) {
Optional<Cliente> clienteDB = this.clienteRepository.findById(cliente.getIdCliente());
if (clienteDB.isPresent()) {
Cliente clienteUpdate = clienteDB.get();
clienteUpdate.setIdCliente(cliente.getIdCliente());
clienteUpdate.setIceCliente(cliente.getIceCliente());
clienteUpdate.setNombreCliente(cliente.getNombreCliente());
clienteUpdate.setApellidoCliente(cliente.getApellidoCliente());
clienteUpdate.setDireccionCliente(cliente.getDireccionCliente());
clienteUpdate.setCuidadCliente(cliente.getCuidadCliente());
clienteUpdate.setTelefonoCliente(cliente.getTelefonoCliente());
clienteUpdate.setEmailCliente(cliente.getEmailCliente());
clienteRepository.save(clienteUpdate);
return clienteUpdate;
} else {
throw new RessourceNotFoundException(
"Cliente no encontrado con nombre de usuario : " + cliente.getIdCliente());
}
}
@Override
public List<Cliente> obtenerCliente() {
return this.clienteRepository.findAll();
}
@Override
public void removeCliente(Integer idCliente) {
Optional<Cliente> clienteDB = this.clienteRepository.findById(idCliente);
if (clienteDB.isPresent()) {
this.clienteRepository.delete(clienteDB.get());
} else {
throw new RessourceNotFoundException("Cliente no encontrado con nombre de usuario : " + idCliente);
}
}
@Override
public Cliente obtenerClientePorId(Integer idCliente) {
Optional<Cliente> clienteDB = this.clienteRepository.findById(idCliente);
if (clienteDB.isPresent()) {
return clienteDB.get();
} else {
throw new RessourceNotFoundException("Cliente no encontrado con nombre de usuario : " + idCliente);
}
}
ClienteRepository:
@Repository
public interface ClienteRepository extends JpaRepository<Cliente, Integer> {
}
ClienteController:
@RestController
//@RequestMapping("/index")
public class ClienteController {
@Autowired
private ClienteService clienteService;
@GetMapping("/clientes")
public ResponseEntity<List<Cliente>> obtenerCliente() {
return ResponseEntity.ok().body(clienteService.obtenerCliente());
}
@GetMapping("/clientes/{id}")
public ResponseEntity<Cliente> obtenerClientePorId(@PathVariable Integer idCliente) {
return ResponseEntity.ok().body(clienteService.obtenerClientePorId(idCliente));
}
@PostMapping("/clientes")
public ResponseEntity<Cliente> agregarCliente(@RequestBody Cliente cliente) {
return ResponseEntity.ok().body(this.clienteService.agregarCliente(cliente));
}
@PutMapping("/clientes/{id}")
public ResponseEntity<Cliente> editarCliente(@PathVariable Integer idCliente, @RequestBody Cliente cliente) {
cliente.setIdCliente(idCliente);
return ResponseEntity.ok().body(this.clienteService.editarCliente(cliente));
}
@DeleteMapping("/clientes/{id}")
public HttpStatus removeCliente(@PathVariable Integer idCliente) {
this.clienteService.removeCliente(idCliente);
return HttpStatus.OK;
}
Основной класс:
@SpringBootApplication
//@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class NestideasFacturasApplication {
@Autowired
public static ClienteService clienteService = new ClienteServiceImpl();
public static void main(String[] args) {
SpringApplication.run(NestideasFacturasApplication.class, args);
System.out.println("Application démarrée");
System.out.println(clienteService);
clienteService.agregarCliente(new Cliente("16565465", "Hassan", "JROUNDI", "Said Hajji", "0662165537",
"hassan.jroundi@outlook.fr", TipoCliente.EMPREZA, "Salé"));
System.out.println(clienteService);
}
Stacktrace:
Stacktrace